Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конец строки в Unix формате 
V
    Опции темы
sadisasha
Дата 8.4.2013, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Суть такова, изначально в файле конец строк записан в формате Unix, после выполнения кода конец строк записывается в форме Windows (об этом я узнал открыв файл блокнотом Notepad++). Подскажите как файл сохранить так чтобы конец строки был как в изначальном виде.
Код

var lines = File.ReadAllLines(pathFileText);
for (var i = 0; i < lines.Lenght)
      lines[i] = Replace(@"\r","");
File.WriteAllLines(pathFileText, lines, Encoding.ASCII);


Это сообщение отредактировал(а) sadisasha - 8.4.2013, 17:44
PM MAIL   Вверх
SKrivosein
Дата 8.4.2013, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



Попробуй так
Код

foreach (var item in lines)
            {
                item.Replace(Environment.NewLine, "\n");
            }



--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
sadisasha
Дата 8.4.2013, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Да нет, это одно и тоже.  У меня в файле 13 строк размер файла 541 байт, в notepad++ есть такая штука (преобразовать в Unix формат), после этого преобразования получается 528 байт то есть убирается 13 байт(13 концов строк), а вот "\n" это как раз конец строки в Windows формате. Получается что Replace ни чего не меняет.
PM MAIL   Вверх
SKrivosein
Дата 8.4.2013, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



\n - это конец строки в UNIX
\n\r - Windows
\r - некоторые версии MacOS
Environment.NewLine

lines[i] = Replace(@"\r","");
Я вот не пойму откуда в этой строке взялся метод Replace? И @"\r" читает дословно а не как ескэйп сиквенс, по моему должно быть "\r".

Это сообщение отредактировал(а) SKrivosein - 8.4.2013, 22:22


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
sadisasha
Дата 8.4.2013, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Вроде как должно быть просто найти "\r\n" и оставить "\n", но вот при сохранении размер не меняется то есть все остается  по старому. Может быть метод WriteAllLines сам добавляет конец строки в формате windows.
PM MAIL   Вверх
SKrivosein
Дата 8.4.2013, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



Да текстовые методы Write сами придают "\r\n".
Не знаю что у тебя там по коду, но вот такое будет работать
Код

    var lines = File.ReadAllLines(@"test.txt");

    using (FileStream safe_file = new FileStream(@"test1.txt", FileMode.Create))
    {
           foreach (var item in lines)
           {
                  var bites = Encoding.ASCII.GetBytes(item + "\n");
                  safe_file.Write(bites, 0, bites.Length);
           }
    }


Это сообщение отредактировал(а) SKrivosein - 8.4.2013, 23:35


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
Machaon
Дата 8.4.2013, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Попробуй так :

Код

string pathFileText = @"C:\test.txt"; //Путь до файла
            StreamReader ReadText = new StreamReader(pathFileText); //Открываешь поток и записываешь в него файл
            string MyText = ReadText.ReadToEnd(); //Читаешь поток в текстовую переменную
            ReadText.Close(); //Закрываешь поток чтения
            //
            //Тут используешь MyText где тебе нужно
            //
            StreamWriter WriteText = new StreamWriter(pathFileText, false, new UTF8Encoding(false)); //Открываешь поток, кодировка UTF8 без BOM
            WriteText.Write(MyText); //Записываешь в поток текст
            WriteText.Close();//Закрываешь поток записи


что такое BOM

Должно все работать.
    

Это сообщение отредактировал(а) Machaon - 8.4.2013, 23:37
PM MAIL ICQ Skype   Вверх
sadisasha
Дата 9.4.2013, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



SKrivosein, спасибо помог разобраться с моей замарочкой.
Код

        private static void WinToUnix(string sourceFile, string distFile)
        {
            var lines = File.ReadAllLines(sourceFile);

            using (var safeFile = new FileStream(distFile, FileMode.Create))
            {
                foreach (var bites in lines.Select(item => Encoding.ASCII.GetBytes(item + "\n")))
                {
                    safeFile.Write(bites, 0, bites.Length);
                }
            }
        }

Вот я подправил твой метод, может кому пригодится.
Machaon, у Вас метод сохраняет текст в кодировке UTF8 без BOM, метод Write все равно приписывает конец строки в формате Windows. И Вас спасибо что откликнулись.

Тему можно закрывать.

Это сообщение отредактировал(а) sadisasha - 9.4.2013, 00:09
PM MAIL   Вверх
diadiavova
Дата 9.4.2013, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(SKrivosein @  9.4.2013,  00:33 Найти цитируемый пост)
Да текстовые методы Write сами придают "\r\n".

Те, которые записывают текст построчно - да, в частности райтолллайнс, райтлайн и т. д. Просто в данном случае лучше для записи использовать  стримрайтер и правильно указать значение вот этого свойства
http://msdn.microsoft.com/ru-ru/library/sy...er.newline.aspx


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
SKrivosein
Дата 9.4.2013, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



Я простенько проверял способ Machaona и он у меня тоже работал. Наверное зависит от конкретных условий, я так побыстрому проверял, чтобы много не кодить. Ну хорошо что есть решение  smile 


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0763 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.