掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルをバイナリで読み込むには?? (ID:116436)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> では逆に言うと、ファイルの一部分だけを配列にいれるということはできないのでしょうか。。 もちろん、可能ですよ。 FileStreamクラスでは、現在、どの位置まで読み込まれているのかという カーソル情報を内部的に保持しています。 そしてこのカーソル位置は、Position プロパティで参照/変更が可能です。 Dim Buffer(15) As Byte Dim FileReader As New System.IO.FileStream("C:\TEST.TXT", IO.FileMode.Open) '&H1F 〜 &H23 までの 5バイト分を、 'Buffer(3)〜Buffer(7) の位置に読み込ませる。 FileReader.Position = &H1F FileReader.Read(Buffer, 3, 5) 'TextBoxに表示させて、配列の内容を確認。 Me.TextBox1.Text = System.BitConverter.ToString(Buffer) FileReader.Close() > 魔界の仮面弁士さんは相当極めていらっしゃる方なんですね!! 一応、Visual Basic の「MVP」として認定されていたりします。 http://mvp.support.microsoft.com/default.aspx?scid=fh;en-us;mvpaward&style=toc > ファイル(sample.txt)の中身:” ft” Unicode で言えば、 1文字目: U+0020 "SPACE" 2文字目: U+0020 "SPACE" 3文字目: U+0020 "SPACE" 4文字目: U+0018 <CONTROL> (CAN) 5文字目: U+0066 "LATIN SMALL LETTER F" 6文字目: U+0074 "LATIN SMALL LETTER T" というデータの並びになりますね。 これを UTF-8 でエンコードすれば、「20 20 20 18 66 74」となりますので、 > 20-20-20-18-66-74 これは正しく表示されている事になります。 > TextBox1.Text = System.BitConverter.ToString(SAMPLE_data) この『SAMPLE_data』というのは、どのようにして作成されたのでしょうか? この部分が分からないため、何とも回答しにくいのですが、少なくとも当方では、 With New System.IO.BinaryReader(New System.IO.FileStream("C:\TEST.TXT", IO.FileMode.Open)) Me.TextBox1.Text = System.BitConverter.ToString(.ReadBytes(6)) .Close() End With というコードで、『20-20-20-18-66-74』という結果を得られましたよ。 > 読込み位置はBaseStream.Seek()でしょうか。。ためしてみます!! それでも OK です。 先に、Position プロパティという物を紹介しましたが、Seekメソッドでも移動が可能です。 ちなみに、(BinaryReaderクラスの)BaseStream プロパティは、ヘルプにもあるように、 基となるストリームを返してくれる仕様ですので、 Dim myFileStream As New System.IO.FileStream("C:\TEST.TXT", IO.FileMode.Open) Dim myBinaryReader As New System.IO.BinaryReader(myFileStream) If myBinaryReader.BaseStream Is myFileStream Then MessageBox.Show("両者は、同じオブジェクトです。") Else MessageBox.Show("両者は、異なるオブジェクトです。") End If 「myBinaryReader.BaseStream.Seek(〜)」というコードというのは、 「myFileStream.Seek(〜)」と全く同じ意味と言う事になります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.