C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: テキストデータの後にバイナリデータを保存する方法


(過去ログ 163 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■94347 / inTopicNo.1)  テキストデータの後にバイナリデータを保存する方法
  
□投稿者/ まどんな (1回)-(2020/04/05(Sun) 14:26:42)

分類:[.NET 全般] 

VB2015を使っています。

途中までが、テキストデータで
その以降が、バイナリデータのデータファイルを生成したいと考えています

テキストデータは



        Using writer As New StreamWriter(FileOutPath, False, Encoding.Default)

            writer.WriteLine("# Header")

        End Using

のようにして出力することができますが、
バイナリデータは保存できないと思います

そのため、一度テキストファイルを出力してからAppendするかたちで以下のようにして
読み込み直す必要があると思います。


        Using stream As Stream = New FileStream(FileOutPath, FileMode.Append, FileAccess.Write, FileShare.Read, 1024 * 64, False)
            Using writer As New BinaryWriter(stream)


                writer.Write(CDbl(Data))

            End Using

        End Using


これを一度に書き出したいのですがどのようにすれば良いですか?

                    writer.Write(Encoding.ASCII.GetBytes("# Header" & vbNewLine))


のようにすれば、BinaryWriterを使ってテキストデータを出力することはできますが、
WriteLineを使うことができず、いちいちvbnewlineを入れないといけないので
面倒です。

StreamWriterのところで、
ファイルではなく、メモリ内に保存しておいて
そこにBinaryWriterで追加することってできますか?

他に良い方法があれば
お教えください。

引用返信 編集キー/
■94348 / inTopicNo.2)  Re[1]: テキストデータの後にバイナリデータを保存する方法
□投稿者/ Hongliang (981回)-(2020/04/05(Sun) 14:56:19)
FileStreamを使いまわすようにすればいいでしょう。

Using stream As New FileStream(...)
    Dim sw As New StreamWriter(stream, ...)
    sw.WriteLine(text)
    sw.Flush()
    Dim bw As New BinaryWriter(stream)
    bw.Write(data)
    bw.Flush()
End Using

StreamWriterをClose()やDispose()するとFileStreamも閉じてしまうので、
代わりにFlush()で書き込みを確定させます。
(なのでStreamWriterをUsingしていません)
使い終わったStreamWriterはそのまま放置で問題ないです。

上記ではBinaryWriterも同様にしているので、さらにそのあとでStreamWriterで書き込むとかもできます。
BinaryWriterで書き込みが終わるなら、そちらはClose/DisposeやUsingしてもかまいません。

引用返信 編集キー/
■94349 / inTopicNo.3)  Re[2]: テキストデータの後にバイナリデータを保存する方法
□投稿者/ まどんな (2回)-(2020/04/05(Sun) 15:25:05)
ありがとうございます。

うまくいきました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -