2009-08-18 3 views
1
public void LoadRealmlist() 
{ 
    try 
    { 
     File.Delete(Properties.Settings.Default.WoWFolderLocation + 
      "Data/realmlist.wtf"); 

     StreamWriter TheWriter = 
      new StreamWriter(Properties.Settings.Default.WoWFolderLocation + 
      "Data/realmlist.wtf"); 

     TheWriter.WriteLine("this is my test string"); 
     TheWriter.Close(); 
    } 
    catch (Exception) 
    {  
    }    
} 

Будет ли мой метод правильно удалять файл, а затем создать его с именем «realmlist.wtf» в качестве имени, а затем написать строку?Удалить файл с помощью File.Delete, а затем с помощью Streamwriter создать тот же файл?

Я немного смущен, потому что я не вижу линию, где она на самом деле создает файл снова. Или же акт создания StreamWriter автоматически создает файл?

ответ

3

Сжатый писатель создаст файл, если он не существует. Он создаст его в конструкторе, поэтому при создании экземпляра StreamWriter.

+0

Для того, чтобы быть понятным, вторая строка внутри моего оператора Try() создаст файл? –

+1

Yep: «StreamWriter TheWriter = новый StreamWriter (Properties.Settings.Default.WoWFolderLocation +« Data/realmlist.wtf »); « – Russell

+0

Все, что мне нужно было знать, большое вам спасибо! –

1

Знаете ли вы, что если вы передадите экземпляр FileStream в конструктор StreamWriter, его можно настроить так, чтобы просто перезаписать файл. Просто передайте его вместе с конструктором.

http://msdn.microsoft.com/en-us/library/system.io.filestream.filestream.aspx

Пример:

try 
{ 
    using (FileStream fs = new FileStream(filename, FileMode.Create)) 
    { 
     //FileMode.Create will make sure that if the file allready exists, 
     //it is deleted and a new one create. If not, it is created normally. 
     using (StreamWriter sw = new StreamWriter(fs)) 
     { 
      //whatever you wanna do. 
     } 
    } 
} 
catch (Exception e) 
{ 
    System.Diagnostics.Debug.WriteLine(e.Message); 
} 

Кроме того, с этим вам не нужно будет использовать метод .Close. Функция using() делает это для вас.