В С# я читаю умеренный размер файла (100 КБ ~ 1 МБ), изменяя некоторые части содержимого и, наконец, записывая в другой файл. Все содержимое - это текст. Модификация выполняется как строковые объекты и строковые операции. Мой текущий подход:
- Прочитайте каждую строку из исходного файла с помощью
StreamReader
. - Откройте
StringBuilder
для содержимого нового файла. - Измените строковый объект и вызовите
AppendLine
StringBuilder
(до конца файла) - Откройте новый
StreamWriter
и напишитеStringBuilder
в поток записи.
Однако я обнаружил, что StremWriter.Write
обрезает 32768 байт (2 ^ 16), но длина StringBuilder
больше. Я мог бы написать простой цикл, чтобы гарантировать полную строку в файле. Но, мне интересно, что было бы самым эффективным способом в С# для выполнения этой задачи?
Подводя итог, я хотел бы изменить только некоторые части текстового файла и записать в другой файл. Но размер текстового файла может быть больше 32768 байт.
== Ответ == Прошу прощения, чтобы сделать confusin! Просто я не называл flush
. StremWriter.Write
не имеет короткого (например, 2 ^ 16) ограничения.