2017-06-20 14 views
1

以下のように、条件付きでログファイルに書き込むコードを複製しないようにします。 VB.netでより良いソリューションがありますか?おそらく、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 

のようなもの:

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 

答えて

2

overloadは、パラメータを持つStreamWriterのコンストラクタのためにあり、ファイルパス文字列を取り、ブールは、それが終わっ追​​加したりべきではないかどうかを示すために切り替えます。ファイルが存在しない場合、このパラメータは効果がなく、コンストラクタは新しいファイルを作成することに注意してください。

したがって、ファイルが存在するかどうかを確認するためにコンストラクタがチェックを処理するようにします。

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

ちょうど 'System.IO.File.Exists(log_file_address)' –

+0

おかげで、問題のこれらの種類を探してくださいする場所に非常にきれいで、良い洞察力を持つ 'true'を交換してください。 – Dpodz

関連する問題