Cシャープでバイナリファイルを読み取りをしようとしています。(Cシャープ初心者です)
その際の読み取りの方法として、下記のような3つの方法があることを知りました。(違っていたらすみません)
同じ結果にはなると思うのです、ドキュメントを見てもこのそれぞれのメリット、デメリットがいまいちわかりませんでした。
下記はあくまでの使用例を並べただけなので、変数とかは気にしないでいただければと思います。
読み込んだ内容は同じと思っていただければと思います。
①<ArraySegmentの場合>
String[] myArr = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" };
ArraySegment<String> myArrSegMid = new ArraySegment<String>( myArr, 2, myArr.Length );
②<Seekの場合>
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
fs.Seek(2, SeekOrigin.Begin);
fs.Read(lf, 0, lf.Length);
③<Position指定の場合>
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
fs.Position = 2;
int readlen = sr.Read(buff, 0, buff.Length);
質問1
それぞれのメリットデメリットはなんでしょうか?
質問2
それぞれで読み込み速度なども違ってくるのでしょうか?
質問3
返ってくる値は同じだと思うのですが、これはそもそも特定の位置まではスキップしているようなイメージなのでしょうか?
何を気にしているかと言うと、指定する位置までのサイズが大きければ、その分遅くなるのかということです。
例えば1000バイトあるバイナリを900バイト目から100バイトを読み込むのと、100バイト目から100バイト読み込むのは同じ処理速度になるのかということです。
どなたかお分かりになるかたご教授いただければ助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。