1

テキストファイルに行を書き込もうとしていますが、これは毎回最後の行を上書きするように見えます。上書きするのではなく、次の行に書き込みたいです。これが私が使用しているコードです

 Dim FileNumber As Integer = FreeFile()
 FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)
 PrintLine(FileNumber, convertedDir)
 FileClose(FileNumber)
4

2 に答える 2

2

古い (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
于 2013-08-18T09:19:10.207 に答える
1

既存のコードに基づく迅速な解決策については、行を変更してください

FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Output)

FileOpen(FileNumber, "c:\Converted.txt", OpenMode.Append)

ただし、FileOpen などは、古い VB および VBA プログラム (およびプログラマー:) との互換性のためだけに存在するため、ファイルの書き込み方法を実際に更新する必要があります。より最新のソリューションについては、varocarbas の回答を確認してください。

于 2013-08-18T11:19:28.130 に答える