0

ファイルのバイナリコードを別のテキストファイルに書き込むプログラムを作成しようとしています。

このプログラムをテキストファイルで使用すると、新しいファイルには何も書き込まれません。次に、これを.jpgファイルと.mp3ファイルでテストしたところ、プログラムはほとんどのバイナリコードを記述しているように見えますが、最後の数バイトは省略されています。これが私のコードです:

Sub Main()
    Console.Write("Filename:  ")
    Dim Filename As String = Console.ReadLine()
    Console.Write("Extension: ")
    Dim Extension As String = Console.ReadLine()
    Console.WriteLine()

    Dim Stream_1 As FileStream = New FileStream(Filename & "." & Extension, FileMode.Open)
    Dim Stream_2 As FileStream = New FileStream(Filename & "_b.txt", FileMode.Create)

    Dim Reader_1 As BinaryReader = New BinaryReader(Stream_1)
    Dim Writer_2 As StreamWriter = New StreamWriter(Stream_2)

    Dim File_Bytes() As Byte = Reader_1.ReadBytes(Convert.ToInt32(Stream_1.Length))

    Dim Binary_String As String = ""

    'These are used to a add line break after every 8 bytes
    Dim Binary_String_Collection As String = ""
    Dim Counter As Integer

    For Each File_Byte In File_Bytes
        Counter += 1

        Binary_String = Convert.ToString(File_Byte, 2)

        For I = 1 To 8 - Binary_String.Length
            Binary_String = "0" & Binary_String
        Next

        Binary_String_Collection = Binary_String_Collection & Binary_String & " "

        If Counter = 8 Then
            Writer_2.WriteLine(Binary_String_Collection)

            Counter = 0
            Binary_String_Collection = ""
        End If
    Next

    If Binary_String_Collection <> "" Then
        Writer_2.WriteLine(Binary_String_Collection)
    End If

    Console.ReadLine()
End Sub

最初は、プログラムがバイナリコードを正しく読み取っていないと思ったので、ファイルに書き込む場所にコンソール出力を追加しました。プログラムは正しい出力を表示したので、なぜ正しく書き込まれないのか混乱しています。

4

1 に答える 1

2

ファイルを閉じて、ストリームを正しく破棄してください。

于 2012-08-05T07:44:42.537 に答える