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

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

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

ファイルから指定した位置のデータをバイト配列に読み込む

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

■84479 / inTopicNo.1)  ファイルから指定した位置のデータをバイト配列に読み込む
  
□投稿者/ 猫 (1回)-(2017/07/06(Thu) 22:22:38)

分類:[.NET 全般] 

https://dobon.net/vb/dotnet/file/filestream.html


'ファイルを開く
Dim fs As New System.IO.FileStream("C:\test.txt", _
System.IO.FileMode.Open, _
System.IO.FileAccess.Read)
'ファイルを読み込むバイト型配列を作成する
Dim bs(fs.Length - 1) As Byte
'ファイルの内容をすべて読み込む
fs.Read(bs, 0, bs.Length)
'閉じる
fs.Close()

というコードでファイルの全データをバイト配列に読み込むことができます。

それで、
ファイルの100byte〜900byte
など指定した部分だけをバイト配列に読み込みたいのですが
どのようにすれば良いですか?



引用返信 編集キー/
■84480 / inTopicNo.2)  Re[1]: ファイルから指定した位置のデータをバイト配列に読み込む
□投稿者/ Azulean (832回)-(2017/07/06(Thu) 23:04:29)
No84479 (猫 さん) に返信
> それで、
> ファイルの100byte〜900byte
> など指定した部分だけをバイト配列に読み込みたいのですが
> どのようにすれば良いですか?

fs.Position = 100 とすることで 100 バイト目に移動と言うことができます。
あとは、読み込みたいバイト数に応じて bs のサイズを変えればよいだけだと思います。
引用返信 編集キー/
■84481 / inTopicNo.3)  Re[1]: ファイルから指定した位置のデータをバイト配列に読み込む
□投稿者/ shu (1033回)-(2017/07/07(Fri) 10:25:52)
No84479 (猫 さん) に返信

>
> というコードでファイルの全データをバイト配列に読み込むことができます。
『できます。』→『できました。』とか『できています。』となるよう質問する前に確認を
先にした方がよいです。


>
> それで、
> ファイルの100byte〜900byte
> など指定した部分だけをバイト配列に読み込みたいのですが
> どのようにすれば良いですか?
>
No84480 のAzuleanさんの回答で十分だと思いますが、
『それで』とあるのでファイルを読み直すということを意味して
いると仮定して別の案を提示します。

読込処理が終わった後に
Dim bs2 = bs.Skip(100-1).Take(900-100+1).ToArray()
とすれば部分配列を作成出来ます。一度ファイルの内容を
読み終わっているので何度も位置を変えアクセスするなら
bsの寿命が延びるようなスコープに変数を定義するとよいと思います。



引用返信 編集キー/
■84482 / inTopicNo.4)  Re[1]: ファイルから指定した位置のデータをバイト配列に読み込む
□投稿者/ WebSurfer (1259回)-(2017/07/07(Fri) 10:30:28)
No84479 (猫 さん) に返信

> ファイルの100byte〜900byte
> など指定した部分だけをバイト配列に読み込みたいのですが
> どのようにすれば良いですか?

その問いの直接の回答は Azlean さんのレスの通りと思いますが、それで質問者さんの最終的な目的は果たせるのでしょうか?

test.txt ということはテキストファイルのようですが、もしそのテキストファイルの何文字目から何文字目までを切り取るというようなことが最終的な目的だとすると、「ファイルの100byte〜900byte」という切り取り方では難しいと思われますが。

そういう話でなないということでしたら失礼しました。上の私のレスはスルーしてください。

引用返信 編集キー/
■84500 / inTopicNo.5)  Re[2]: ファイルから指定した位置のデータをバイト配列に読み込む
□投稿者/ 猫 (2回)-(2017/07/07(Fri) 23:43:15)
ご回答ありがとうございます。


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

このトピックをツリーで一括表示


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

このトピックに書きこむ