2010-10-18 2 views
4

Вопрос: У меня есть файл ini, который мне нужно очистить, прежде чем я добавлю к нему информацию.Как очистить текстовый файл без удаления файла?

К сожалению, если я просто удалю файл, разрешения также исчезнут.

Есть ли способ удалить содержимое файла без удаления файла?

ответ

7
String path = "c:/file.ini"; 
    using (var stream = new FileStream(path, FileMode.Truncate)) 
    { 
     using (var writer = new StreamWriter(stream)) 
     { 
      writer.Write("data"); 
     } 
    } 
+0

Обратите внимание, что этот подход лучше всего использовать, если у вас есть весь код для записи нового контента внутри того же метода. Если у вас есть функция удаления и запись нового контента отдельными методами, вместо этого вы должны использовать любой из других ответов. – awe

+0

Зачем вам использовать это вместо «using (var writer = File.CreateText (путь)) {writer.Write (" data ");}"? –

+0

В вашем случае, если файл не существует, он создается. Мы не знаем, действительно ли это для темы-стартера. Я использовал общий пример, который можно адаптировать соответствующим образом. – QrystaL

5

Просто откройте файл в режиме усечения (то есть без добавления) и закройте его. Затем его содержимое исчезло. Или используйте ярлык в My имен:

My.Computer.FileSystem.WriteAllText("filename", "", False) 
+2

если он будет добавлять новые данные в Anywho, почему бы не просто запись в файл в режиме усечения? «у меня есть INI-файл, который мне нужен чтобы очистить, прежде чем я добавлю к нему информацию ». - OP – Adkins

+0

Правильный способ +1 для этого – TalentTuner

+0

@ Адкинс: только OP может ответить на этот вопрос. заданный вопрос предполагает, что он использует API для записи INI-файла, который использует режим append внутри - странно, по общему признанию. –

3

Это, вероятно, следует работать:

using (File.Create("your filename")); 

Здесь, использование не имеет блок из-за; в конце строки. Файл.Create обрезает сам файл, и его использование немедленно закрывает его.

4

Я не уверен на 100%, но вы можете попробовать это:

File.WriteAllText(filename, ""); 

Я не уверен, если это будет удалить, и заново создать файл (в том случае, если ваша проблема разрешения будет сохраняться, или если он будет очищать файл. Попробуйте!