2016-01-29 4 views
2

Я экспортирую текст в файл на C#, используя System.IO.File.AppendAllText, и передавая его в текстовый файл, а затем текст, который я хочу экспортировать, добавлен в конец с добавлением \n. Когда я просматриваю текстовый документ, они не находятся на разных строках, хотя этот досадный символ обратной линии существует между строками. Таким образом, система может думать, что это две линии, но пользователь видит ее как одну. Как это можно зафиксировать автоматически, не делая find-replace каждый раз, когда я создаю файл?Новый символ строки в текстовом файле (C#)

System.IO.File.AppendAllText(@"./WarningsLog.txt", line + "\n"); 
+0

Как вы создаете текст для добавления в файл? Используете ли вы 'StringBuilder' и' AppendLine() 'или просто конкатенируете строку? – krillgar

+2

Угадайте, что может быть неправильно в коде, не видя этого кода, не очень эффективно. –

+1

Попробуйте добавить '\ r \ n' вместо' \ n' – erikscandola

ответ

11

Вы должны использовать Environment.NewLine вместо \n, поскольку символ новой строки может быть больше, чем это. в окнах (если я не ошибаюсь), по умолчанию на самом деле \r\n

Хотя, используя \r\n, поможет вам временно, используя Environment.NewLine есть правильный путь, чтобы пойти

+0

Отлично, отлично поработал. –

4

Во-первых, есть a couple of ways представлять новая линия. Наиболее часто используемыми являются:

  • Unix путь - писать \n характер. \n здесь представляет n символ сети.
  • windows way - написать \r\n символов. \r здесь подходит для перевозки r eturn знак.

Если вы пишете что-то независимое от платформы, Environment.NewLine выполнит эту работу за вас и подберет правильный символ (символы).

MSDN утверждает, что представляет собой:

строка, содержащая "\ г \ п" для не-Unix платформ, или строки, содержащие "\ N" для Unix платформ.

Кроме того, в некоторых случаях вы можете захотеть использовать System.IO.File.AppendAllLines, который принимает IEnumerable<string> как совокупность линий и присоединяет его в файл. К сожалению, мне не удалось найти, какой разделитель строк используется там, но я думаю, что это все еще Environment.NewLine.

Смежные вопросы