テキストファイルに行を書き込もうとしていますが、これは毎回最後の行を上書きするように見えます。上書きするのではなく、次の行に書き込みたいです。これが私が使用しているコードです
Dim FileNumber As Integer = FreeFile()
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
PrintLine(FileNumber, convertedDir)
FileClose(FileNumber)
テキストファイルに行を書き込もうとしていますが、これは毎回最後の行を上書きするように見えます。上書きするのではなく、次の行に書き込みたいです。これが私が使用しているコードです
Dim FileNumber As Integer = FreeFile()
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
PrintLine(FileNumber, convertedDir)
FileClose(FileNumber)
古い (VB6/VBA) コードを使用しています。.NET を使用することをお勧めしますStreamWriter
。
Dim append As Boolean = True
Using writer As System.IO.StreamWriter = New System.IO.StreamWriter("c:\Converted.txt", append)
writer.WriteLine(convertedDir)
End Using
append
指定されたファイルを追加する必要があるかどうかを示します。それにもかかわらず、Boris B. が提案したように、この変数を常に に設定できます。True
なぜなら、StreamWriter
は両方の状況 (既存のファイルかどうか) を自動的に処理できるからです。
いずれにせよ、「理論的に正しい」対処方法を以下に含めています(指定されたファイルが存在するかどうかに応じてをStreamWriter
変更することにより):append property
Dim append As Boolean = False
Dim fileName As String = "c:\Converted.txt"
If (System.IO.File.Exists(fileName)) Then
append = True
End If
Using writer As System.IO.StreamWriter = New System.IO.StreamWriter(fileName, append)
writer.WriteLine(convertedDir) 'Writes to a new line
End Using
既存のコードに基づく迅速な解決策については、行を変更してください
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
に
FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Append)
ただし、FileOpen などは、古い VB および VBA プログラム (およびプログラマー:) との互換性のためだけに存在するため、ファイルの書き込み方法を実際に更新する必要があります。より最新のソリューションについては、varocarbas の回答を確認してください。