2014-06-19 4 views
0

나는이 매우 큰 텍스트 파일 (약 35 000 + 라인의 정보)을 가지고 있으며 특정 라인을 추출하여 다른 텍스트 파일에 배치하고 싶습니다.C# 텍스트 파일 찾아보기 및 파일 쓰기

Feature info 
    Feature name: 123456 
    Version: 1 

    Tokens total: 35 
    Tokens remaining: 10 

그리고 기능 이름을 추출 좋아하고 총 토큰 것 :

텍스트 파일은 다음과 같이 간다. 제가 염두에 두었던 것은 두 개의 버튼이있는 폼이었습니다. 하나는 파일 찾아보기를위한 것이고 다른 하나는 파일 형식으로 전체 읽기 및 쓰기를 수행하는 것입니다. 물론 라인 형식으로 같은 줄에 입력해야합니다.

누구나 방법에 대한 단서가 있습니까? 내가 검색 한 내가 정말도 꽤 새로운 읽기/쓰기 파일에 특정 일을 발견하지 않았습니다 ...

EDIT 여기

좋아, 내가 지금까지 무엇을하고 그것을 작동 :

private void button1_Click(object sender, EventArgs e) 
    { 

     int counter = 0; 
     string line; 
     string s1 = "Feature name"; 
     string s2 = "Tokens total"; 


     // Read the file and display it line by line. 
     System.IO.StreamReader file = new System.IO.StreamReader("d:\\license.txt"); 
     using (System.IO.StreamWriter file2 = new System.IO.StreamWriter(@"D:\test.txt")) 
     while ((line = file.ReadLine()) != null) 
      { 
       if (line.Contains(s1) || line.Contains(s2)) 
       { 
        file2.WriteLine(line); 
        counter++; 
       } 
      } 

     file.Close(); 

그리고 이것은 하나의 버튼으로 이루어집니다. 내가 비록 원하는 것은 내가 원하는 파일을 검색하고 모든 쓰기 작업을 수행하기 위해 다른 버튼을 사용할 수 있도록하는 것입니다

+3

'검색해 본 결과 특정 항목을 찾지 못했습니다. 의심 스럽습니다. –

+1

['File.ReadLines()'] (http://msdn.microsoft.com/en-us/library/dd383503)을 살펴보십시오. % 28v = vs.110 % 29.aspx) 및 ['string.StartsWith()'] (http://msdn.microsoft.com/en-gb/library/system.string.startswith.aspx) –

+1

StreamReader를 검색하십시오. 및 StreamWriter C#에서 clases. 나머지는 한 줄씩 읽고 필요한 문자열을 추출하는 문자열 작업입니다. –

답변

1

대답에 정의 된 그룹을 검색 할 수 있습니다

읽기 전용 데이터를 양식 클래스의 속성 또는 개인 필드에 저장할 수 있습니다. String 또는 StringBuilder를 사용하는 것이 좋습니다. 두 번째 버튼을 클릭하면 저장된 데이터가 있는지 확인하고 출력 파일에 기록합니다.

private StringBuilder data = new StringBuilder(); 

private void button2_Click(object sender, EventArgs e) 
{ 
    if(data.Length > 0) 
    { 
     using(System.IO.StreamWriter file2 = new System.IO.StreamWriter(@"D:\test.txt")) 
     { 
      file2.Write(data.ToString()); 
     } 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    // Clear the previous store data 
    data.Clear(); 

    // ... 

    System.IO.StreamReader file = new System.IO.StreamReader("d:\\license.txt"); 
    while ((line = file.ReadLine()) != null) 
    { 
     if (line.Contains(s1) || line.Contains(s2)) 
     { 
      sb.AppendLine(line); 
      counter++; 
     } 
    } 

    file.Close(); 
} 

System.IO에 사용 추가하고 코드를 읽기가 될 것이며, 당신이 사용하는 리소스를 해제하는 것을 잊지 않도록 블록을 사용하여 위해 StreamReader와 StreamWriter를 둘러싸고하십시오.

+0

답변 해 주셔서 감사합니다. 그것에서 좋은 무언가를 만들기 위해 관리! –

1

당신은 읽기/쓰기 파일 StreamReaderStreamWriter을 사용할 수 있습니다

특정 부분을 추출하려면 그것은 Match를 반환합니다 텍스트, 당신은 Regex.Matches를 사용할 수 있습니다, 당신은 편집에 대한 Match.Groups

// Search name 
Match mu = Regex.Match(line, @"Feature name: (\d+)"); 

// Get name 
if (mu.Groups.Count == 1) Console.Writeline(mu.Groups[0].Value); 
+0

고맙습니다. –