2017-06-20 2 views
1

Ich möchte vermeiden, Code zu schreiben, um in eine Protokolldatei bedingt zu schreiben, wie ich unten tue. Gibt es eine bessere Lösung in VB.net?Bedingte Definition mit Verwendung in VB.net

If Not System.IO.File.Exists(log_file_address) Then 
    Using log_file_stream as New System.IO.StreamWriter(log_file_address) 
     log_file_stream.Writeline (current_time_string) 
     log_file_stream.Writeline (" ") 
     log_file_stream.Writeline (log_message) 
     log_file_stream.Close() 
    End Using 
Else 
    Using log_file_stream As IO.StreamWriter = System.IO.File.AppendText(log_file_address) 
     log_file_stream.Writeline (current_time_string) 
     log_file_stream.Writeline (" ") 
     log_file_stream.Writeline (log_message) 
     log_file_stream.Close() 
    End Using 
End If 

Vielleicht so etwas wie:

Using log_file_stream as If(System.IO.File.Exists(log_file_address), _ 
          System.IO.File.AppendText(log_file_address), _ 
          New System.IO.StreamWriter(log_file_address)) 
    log_file_stream.Writeline (current_time_string) 
    log_file_stream.Writeline (" ") 
    log_file_stream.Writeline (log_message) 
    log_file_stream.Close() 
End Using 

Antwort

2

Es gibt einen overload für den Konstruktor der StreamWriter mit Parameter einen String Dateipfad nimmt und Boolean wechseln, um anzuzeigen, wenn sie über oder nicht anhängen soll. Ist diese Datei nicht vorhanden, hat dieser Parameter keine Auswirkung und der Konstruktor erstellt eine neue Datei.

Also eine Änderung an und lassen Sie den Konstruktor kümmern sich um die Prüfung, ob die Datei existiert.

Using log_file_stream as New System.IO.StreamWriter(log_file_address, True) 
    'Write to log file... 
End Using 
+0

ersetzen Sie einfach den 'true' mit' System.IO.File.Exists (log_file_address) ' –

+0

Danke, sehr sauber und einen guten Einblick in denen für diese Art von Problemen zu suchen. – Dpodz

Verwandte Themen