Как я могу очистить содержимое файла? - PullRequest
70 голосов
/ 15 февраля 2011

Мне нужно очищать содержимое определенного файла каждый раз, когда запускаются приложения. Как мне это сделать?

Ответы [ 6 ]

114 голосов
/ 15 февраля 2011

Вы можете использовать метод File.WriteAllText .

System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
72 голосов
/ 18 марта 2011

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

FileStream fileStream = File.Open(<path>, FileMode.Open);

/* 
 * Set the length of filestream to 0 and flush it to the physical file.
 *
 * Flushing the stream is important because this ensures that
 * the changes to the stream trickle down to the physical file.
 * 
 */
fileStream.SetLength(0);
fileStream.Close(); // This flushes the content, too.
10 голосов
/ 15 февраля 2011

Используйте FileMode.Truncate каждый раз, когда вы создаете файл. Также поместите File.Create внутри try catch.

2 голосов
/ 15 февраля 2011

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

1 голос
/ 15 февраля 2011

Попробуйте использовать что-то вроде

File.Create

Создает или перезаписывает файл в указанный путь.

0 голосов
/ 06 июля 2019

Самый простой способ:

File.WriteAllText(path, string.Empty)

Однако я рекомендую использовать FileStream, потому что первое решение может выдать UnauthorizedAccessException

using(FileStream fs = File.Open(path,FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
     lock(fs)
     {
          fs.SetLength(0);
     }
}
...