| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Конец строки в Unix формате |
| Автор: sadisasha 8.4.2013, 17:43 | ||
Суть такова, изначально в файле конец строк записан в формате Unix, после выполнения кода конец строк записывается в форме Windows (об этом я узнал открыв файл блокнотом Notepad++). Подскажите как файл сохранить так чтобы конец строки был как в изначальном виде.
|
| Автор: SKrivosein 8.4.2013, 21:20 | ||
Попробуй так
|
| Автор: sadisasha 8.4.2013, 21:38 |
| Да нет, это одно и тоже. У меня в файле 13 строк размер файла 541 байт, в notepad++ есть такая штука (преобразовать в Unix формат), после этого преобразования получается 528 байт то есть убирается 13 байт(13 концов строк), а вот "\n" это как раз конец строки в Windows формате. Получается что Replace ни чего не меняет. |
| Автор: SKrivosein 8.4.2013, 21:58 |
| \n - это конец строки в UNIX \n\r - Windows \r - некоторые версии MacOS http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx lines[i] = Replace(@"\r",""); Я вот не пойму откуда в этой строке взялся метод Replace? И @"\r" читает дословно а не как ескэйп сиквенс, по моему должно быть "\r". |
| Автор: sadisasha 8.4.2013, 22:58 |
| Вроде как должно быть просто найти "\r\n" и оставить "\n", но вот при сохранении размер не меняется то есть все остается по старому. Может быть метод WriteAllLines сам добавляет конец строки в формате windows. |
| Автор: SKrivosein 8.4.2013, 23:33 | ||
| Да текстовые методы Write сами придают "\r\n". Не знаю что у тебя там по коду, но вот такое будет работать
|
| Автор: Machaon 8.4.2013, 23:35 | ||
Попробуй так :
http://ru.wikipedia.org/wiki/Byte_order_mark Должно все работать. |
| Автор: sadisasha 9.4.2013, 00:07 | ||
SKrivosein, спасибо помог разобраться с моей замарочкой.
Вот я подправил твой метод, может кому пригодится. Machaon, у Вас метод сохраняет текст в кодировке UTF8 без BOM, метод Write все равно приписывает конец строки в формате Windows. И Вас спасибо что откликнулись. Тему можно закрывать. |
| Автор: diadiavova 9.4.2013, 00:09 |
Те, которые записывают текст построчно - да, в частности райтолллайнс, райтлайн и т. д. Просто в данном случае лучше для записи использовать стримрайтер и правильно указать значение вот этого свойства http://msdn.microsoft.com/ru-ru/library/system.io.textwriter.newline.aspx |
| Автор: SKrivosein 9.4.2013, 00:16 |
| Я простенько проверял способ Machaona и он у меня тоже работал. Наверное зависит от конкретных условий, я так побыстрому проверял, чтобы много не кодить. Ну хорошо что есть решение |