C # добавить текст в текстовый файл, не переписывая его? - PullRequest
3 голосов
/ 05 марта 2012

Допустим, у меня есть следующий код:

StreamWriter sw = new StreamWriter(File.OpenWrite(Path));
sw.Write("Some stuff here");
sw.Dispose();

Этот код заменяет содержимое файла на «Некоторые вещи здесь», однако я бы хотел добавить текст в файл, а не заменять текст. Как бы я это сделал?

Ответы [ 6 ]

5 голосов
/ 05 марта 2012

Вы должны указать StreamWriter, который хотите добавить:

var sw = new StreamWriter(path, true);

File.OpenWrite не поддерживает добавление.

4 голосов
/ 05 марта 2012

Вы можете использовать метод File.AppendAllText и заменить 3 строки кода, которые у вас есть:

File.AppendAllText(Path, "blah");

Таким образом, вам не нужно беспокоиться о потоках и утилизацииих (даже в случае исключения, которое, между прочим, вы делаете не правильно), и код довольно прост и понятен.

2 голосов
/ 05 марта 2012

Проверьте System.IO.File.AppendAllText

http://msdn.microsoft.com/en-us/library/ms143356.aspx

Вы можете делать то, что вы хотите, делая что-то вроде

File.AppendAllText(path, text);
1 голос
/ 05 марта 2012

Используйте параметр append:

StreamWriter sw = new StreamWriter(Path, true);

http://msdn.microsoft.com/en-us/library/36b035cb.aspx

1 голос
/ 05 марта 2012

Существует конструктор StreamWriter, который принимает bool в качестве второго параметра, который инструктирует писателя добавлять, если оно истинно.

0 голосов
/ 05 марта 2012

Чтобы добавить текст в файл, вы можете открыть его, используя FileMode.Append.

StreamWriter sw = new StreamWriter(File.Open(Path, System.IO.FileMode.Append));

Это всего лишь один из способов сделать это. Хотя, если вам явно не нужен объект StreamWriter, я бы рекомендовал использовать то, что предлагали другие: File.AppendAllText.

...