Я просто хочу, чтобы объединить все текстовые файлы в данном каталоге, подобно следующей командной строке команду:Слияние нескольких текстовых файлов - StreamWriter не пишет один файл?
cd $directory
copy * result.txt
я написал следующий код, который практически выполняет то, что я хочу, но он делает что-то странное , Когда StreamWriter
записывает первый файл (или когда i = 0
), он фактически не пишет никакого содержимого - размер файла остается 0 байтами, несмотря на то, что первый файл составляет ~ 300 КБ. Однако другой файл записывается успешно.
Если я сравню вывод из командной строки с выходом кода C# в diff, вы увидите, что отсутствует большой блок текста. Кроме того, результат командной строки составляет 1,044 КБ, где результат C# составляет 700 КБ.
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());
}
}
}
Am Я с помощью StreamWriter
/StreamReader
неверно?
'FileMode.OpenOrCreate' добавит все файлы во второй раз в выходной файл, когда программа снова запустится в том же каталоге. Скорее используйте 'FileMode.Create', чтобы полностью перезаписать его или' FileMode.CreateNew', чтобы получить исключение, когда оно уже существует. – Herdo
@Herdo Программа удаляет любую существующую папку, соответствующую переменной 'filePath' до запуска, поэтому эта реализация должна быть в порядке. Спасибо! – TimeBomb006