은 단순히 특정 디렉토리에있는 모든 텍스트 파일을 병합 할, 다음 명령 프롬프트 명령과 유사한 : 나는 다음과 같은 코드를 작성했습니다여러 텍스트 파일 병합 - 하나의 파일을 쓰지 않는 StreamWriter?
cd $directory
copy * result.txt
거의 내가 원하는 것을 달성하는, 그러나 그것은 이상한 일을하고 있어요 . StreamWriter
이 첫 번째 파일을 쓸 때 (또는 i = 0
일 때) 실제로 내용을 쓰지 않습니다. 첫 번째 파일이 ~ 300KB 임에도 불구하고 파일 크기는 0 바이트로 유지됩니다. 그러나 다른 파일 쓰기가 성공적으로 실행됩니다.
명령 프롬프트의 출력을 diff의 C# 코드 출력과 비교하면 큰 텍스트 블록이 없음을 알 수 있습니다. 또한 명령 프롬프트 결과는 C# 결과가 700KB 인 1,044KB입니다.
string[] txtFiles = Directory.GetFiles(filepath);
using (StreamWriter writer = new StreamWriter(filepath + "result.txt"))
{
for (int i = 0; i < txtFiles.Length; i++)
{
using (StreamReader reader = File.OpenText(txtFiles[i]))
{
writer.Write(reader.ReadToEnd());
}
}
}
오전 내가 잘못 StreamWriter
/StreamReader
를 사용하고 계십니까?
'FileMode.OpenOrCreate'는 프로그램이 같은 디렉터리에서 다시 실행될 때 모든 파일을 출력 파일에 두 번째로 추가합니다. 그것을 완전히 덮어 쓰려면'FileMode.Create'를 사용하거나, 이미 존재할 때 예외를 얻으려면'FileMode.CreateNew'를 사용하십시오. – Herdo
@Herdo 프로그램은 실행되기 전에'filePath' 변수와 일치하는 기존 폴더를 삭제하므로이 구현은 정상적으로 이루어져야합니다. 고맙습니다! – TimeBomb006