VB.NETでファイルにデータを追加して保存するには?

解決


アルバート  2006-11-24 18:31:47  No: 134277

現在、バイナリデータをファイルを以下のような記述で保存しています。

Imports System.IO

Dim sfd As New SaveFileDialog
Dim f As FileStre
Dim w As BinaryWriter
Dim i As Integer
sfd.Filter = "バイナリファイル(*.bin)|*.bin|すべてのファイル(*.*)|*.*"
If sfd.ShowDialog() = DialogResult.OK Then
    Console.WriteLine(sfd.FileName)
    Try
        f = New FileStream(sfd.FileName, FileMode.Create)
        Try
            w = New BinaryWriter(f)
            w.Seek(0, SeekOrigin.Begin)
            For i = 0 To 10
                w.Write(data(i))
            Next
            w.Flush()
        Finally
        w.Close()
        f.Close()
        End Try
    Catch ex As Exception
        MessageBox.Show(ex.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning)
    End Try
End If

以上の記述をボタンをクリックしたときに記述しているのですが、このクリックをする度に、同じファイルを選択すると、今まで保存したデータを破棄して、また、最初から上書きしてしまいます。
同じファイルで上書きせずに、追加してデータを保存する方法がありましたら、教えてほしいのですが宜しくお願い致します。


特攻隊長まるるう  2006-11-24 21:11:10  No: 134278

FileMode が作成(上書き)だからでは?


Hongliang  URL  2006-11-24 21:41:41  No: 134279

おまけにわざわざ先頭にシークさせてますね。


アルバート  2006-11-25 05:53:03  No: 134280

特攻隊長まるるう様、Hongliang様

本当にありがとうございます。

(改良前)f = New FileStream(sfd.FileName, FileMode.Create)

(改良後)f = New FileStream(sfd.FileName, FileMode.Append)

及び

(改良前)w.Seek(0, SeekOrigin.Begin)

(改良後)w.Seek(0, SeekOrigin.End)
を行い、無事に目的が達成されました。

初心者の私に、わざわざ、コメントを下さり、
心から感謝申し上げます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加