2010-12-07 4 views
2

다음 코드는 문자열로 한 번에 하나씩 파일을 읽고 문자열 내에서 일치하는 패턴을 바꾼 다음 파일에 추가합니다.C# StreamWriter 문제

추가하는 대신 덮어 쓰길 원합니다. 여기서 내가 뭘 잘못하고 있니?

using (FileStream fs = new FileStream(fileList[i], FileMode.Open)) 
using (StreamReader fileIn = new StreamReader(fs, true)) 
{ 
    String file = fileIn.ReadToEnd().ToLower(); 
    MessageBox.Show(file); 


    if (file.Contains(oPath)) 
    { 
     updated++; 
     file = file.Replace(oPath, nPath); 

     using (StreamWriter replaceString = new StreamWriter(fs, Encoding.Unicode)) 
     { 
       replaceString.Write(file); 
       listBoxResults.Items.Add(fileList[i]); 
     } 
    } 
} 

답변

2

당신은 그것에서 읽은 후 파일을 작성하는 - 그래서 FileStream에서 "커서"끝입니다.

오히려 스트림을 직접 처리하는 것보다, 사용하기 간단 할 것이다 :

String file = File.ReadAllText(fileList[i]).ToLower(); 

... perform replacements etc ... 

File.WriteAllText(fileList[i], file); 
+0

완벽한을, 감사합니다 :], 내가 .NET 2.0을 사용하고 나를 위해 컴파일되지 않습니다 – cc0

2

"StreamWriter를"의 두 번째 매개 변수는 다음과 같습니다 "추가". 그래서 당신이 시도해야합니다

StreamWriter replaceString = new StreamWriter(fs, false, Encoding.Unicode) 
+0

을, 어쩌면 이후 버전에서는 다른가요? – cc0

+1

아, 알겠습니다 .. 첫 번째 매개 변수가 경로 (문자열) 인 경우에만 작동합니다. – EvilMM

+0

아니, 어느 쪽도하지 않는 것 같습니다. – cc0

관련 문제