(C # WinFoms) Написание файлов и новая строка - PullRequest
3 голосов
/ 18 февраля 2010

Я делаю изменения в файле, исходный файл - это простой текстовый файл, но из системы UNIX.

Я использую StreamReader для чтения файла 'source', затем я делаю и сохраняю изменения в StringBuilder, используя AppendLine().

Затем я создаю StreamWriter (настройка с тем же Encoding, что и StreamReader) и записываю файл.

Теперь, когда я сравниваю два файла с помощью WinMerge, он сообщает, что символы возврата каретки отличаются.

Что нужно сделать, чтобы символы возврата каретки совпадали с типом файла, который я редактирую?

Следует также отметить, что файлы, которые должны быть изменены , могут поступать из любой системы , а не только из системы UNIX, они также могут быть из системы Windows - поэтому я хочу, вставка этих новых строк с тем же типом возврата каретки, что и в исходном файле

Большое спасибо за любые ответы.

:)

Ответы [ 2 ]

4 голосов
/ 18 февраля 2010

Сначала вам нужно установить символ новой строки для текущего файла. Это может быть проблемой, поскольку данный файл может смешивать разные окончания строк.

Затем вы можете установить свойство NewLine вашего StreamWriter:

StreamWriter sw = new StreamWriter("example.txt");

sw.NewLine = "\r";

Для интересного прочтения об окончаниях строк посмотрите Великий раскол Новой Линии .

3 голосов
/ 18 февраля 2010

Тип конца строки, используемый файлом, не зависит от кодировки. Похоже, вам может понадобиться прочитать исходный файл, чтобы определить, с какого конца строки начинать (что вы должны сделать явно; я не верю, что в рамках есть что-то, что может дать вам эту информацию), а затем явно использовать это при создании новый файл. (Вместо того, чтобы вызывать AppendLine, вызовите Append с самой строкой, а затем Append снова с соответствующим ограничителем строки для этого файла.)

Обратите внимание, что один файл может иметь различные окончания строк - некоторые "\ r \ n", некоторые "\ n" и некоторые "\ r", поэтому вам придется применять соответствующие эвристика (например, выбор наиболее часто встречающегося окончания строки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...