2016-02-21 25 views
5

Sto provando a utilizzare StreamWriter per registrare una ricerca ogni volta che qualcuno cerca sul mio programma. Posso ottenere StreamWriter per scrivere un nuovo file ma non crea alcun contenuto. Ho provato a cercare su Google l'uso corretto e per me sembra che l'ho fatto correttamente. Se riesci a leggere il mio codice e dirmi dove sbaglio, sarò molto grato!C# - StreamWriter sta creando il mio file ma nessun contenuto

StreamWriter write = new StreamWriter("searchLogFile.dat"); 
write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 

quindi dovrebbe stampare un qualcosa di linea lungo le linee di: "TITOLO === $ 100.00"

risposta

9

non avete chiuso lo scrittore. Lo scrittore memorizza i dati, quindi se gli permetti di raccogliere i dati inutili senza lavarli o chiuderli, l'handle del file verrà chiuso senza scrivere mai i dati nel file.

Si dovrebbe idealmente farlo con una dichiarazione using:

using (StreamWriter write = new StreamWriter("searchLogFile.dat")) 
{ 
    write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 
} 

In questo modo lo scrittore sarà chiusa anche se viene generata un'eccezione. Prendi l'abitudine di utilizzare le istruzioni using per i tipi che implementano IDisposable.

Vorrei anche suggerire di utilizzare File.WriteAllText se si desidera scrivere solo un valore in un file. È inoltre possibile utilizzare i sovraccarichi di TextWriter.WriteLine che accettano stringhe di formato per rendere questo codice più semplice:

writer.WriteLine("{0} === {1:C"}, gameTitle, saleValue); 

O con C# 6:

writer.WriteLine($"{gameTitle} === {saleValue:C}"); 

O tutti in una volta sola:

File.WriteAllText("searchLogFile.dat", $"{gameTitle} === {saleValue:C}"); 
Problemi correlati