2010-05-25 13 views
0

기본적으로 정말 큰 텍스트 파일을 읽으려고하고 있는데 줄의 charecters가 X 줄에 도달하면 새 줄에 쓰지만 문자 수를 얻지 못하는 것 같습니다. 일하다. 어떤 도움을 주셔서 감사합니다!새 줄에 쓸 때 C# 문자 카운터

using (FileStream fs = new FileStream(betaFilePath,FileMode.Open)) 
    using (StreamReader rdr = new StreamReader(fs)) 
    { 
     while (!rdr.EndOfStream) 
     { 
      string betaFileLine = rdr.ReadLine(); 
      int stringline = 0; 
      if (betaFileLine.Contains("þTEMP")) 
      { 
       //sb.AppendLine(@"C:\chawkster\workfiles\New Folder\GEL_ALL_PRODUCTS_CONCORD2.DAT"); 
       string checkline = betaFileLine.Length.ToString(); 
       foreach (string cl in checkline) 
       { 
        stringline++; 
        File.AppendAllText(@"C:\chawkster\workfiles\New Folder\GEL_ALL_PRODUCTS_CONCORD3.DAT", cl); 
        if(stringline == 1200) 
        { 
         File.AppendAllText(@"C:\chawkster\workfiles\New Folder\GEL_ALL_PRODUCTS_CONCORD3.DAT","\n"); 
         stringline = 0; 
        } 
       }       
      } 
     } 

오류 : 당신이 string checkline = betaFileLine.Length.ToString();있는 이유는 단지 현재 행을 타고 당신에게 문자열 형식의 숫자입니다 길이를 줄 것이기 때문에 이해가 안

foreach (string cl in checkline) 
Error 1 Cannot convert type 'char' to 'string' 

답변

0

정규식을 사용하여 입력 문자열을 원하는 문자 양의 덩어리로 나눕니다. 문자열은 이미 IEnumerable을 입니다

string input = File.ReadAllText(inputFilePath); 
MatchCollection lines = Regex.Matches(input, ".{1200}", RegexOptions.Singleline); // matches any character including \n exactly 1200 times 
StringBuilder output = new StringBuilder(); 

foreach (Match line in lines) 
{ 
    output.AppendLine(line.Value); 
} 

File.AppendAllText(outputFilePath, output.ToString()); 
1

. 현재 줄에있는 모든 문자를 원하지 않습니까? 거기에 숫자 길이를 원하는지 확실하지 않습니다. - 당신이 코드

foreach (char cl in checkLine) 
{ 
    ... 
    File.AppendAllText(fileName, cl.ToString()); 
} 

나는 또한 좋을 것 당신이 그것을 넣어를 사용할 필요가

// Get the current line as an array of characters 
char[] checkline = betaFileLine.ToCharArray(); 

// Iterate for each character add to you file? 
foreach (char cl in checkline) 
+1

당신은 그냥 할 수있는'foreach는 (betaFileLine에서 문자의 CL)': 다음은 예입니다. 하지만 네 말이 맞아, 내가 뭘하려고하는지 잘 모르겠다. –

+0

@Yuriy Faktorovich 예 내가 한 일을 단계별로 볼 수 있도록 깨뜨 렸습니다. – Kelsey

0

선택 System.String이 IEnumerable을 구현합니다 정확히하고 있지만 시도하고있는 무슨 정말 확실

하지 않음 모두를 메모리 내 스트림 또는 StringBuilder에 저장하고 각 문자를 FileStream에 개별적으로 쓰는 대신 한 번에 파일에 모두 저장합니다.