- ベストアンサー
InputStream.skipメソッドについて
- InputStream.skipメソッドを使用してファイルから指定したバイト数をスキップする方法について知りたいです。
- ファイルから先頭の4バイトをスキップし、その後に4バイトずつ読み込みながら処理を繰り返したいです。
- 具体的には、読み込んだデータを処理せずに出力することを考えています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
4バイトスキップと4バイト処理を交互に繰り返したいなら、skipメソッドではなくカウンター変数を用意してそちらで制御を行うのがよかろう。InputStream#skip()云々ではなくアルゴリズムの問題だ。以下、できるだけskip2の構造を変えずにskip3を示す。skip2との対比のためなので、プログラムを整理しなおしてみて欲しい。 import java.io.IOException; import java.io.FileInputStream; public class skip3 { public static void main(String[] args) throws IOException { FileInputStream fis = null; int i=0; int counter=0; char c; try{ fis = new FileInputStream("ファイル"); // fis.skip(4); // 要らん //ファイルへの読み書き/////////////////////////////////////////// while((i=fis.read())!=-1) { ///////////////////////////////////////////////////////////////// if(counter >= 4) { // counterが0,1,2,3の時は処理しない つまりcounterが4,5,6,7の時は処理をする c = (char)i; System.out.print(c); } if(++counter >= 8) { counter = 0; } } }catch(Exception ex){ // if any error occurs ex.printStackTrace(); }finally{ // releases all system resources from the streams if(fis!=null) fis.close(); } } }
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
「4バイトスキップ→4バイト読んで処理」 を繰り返す.
お礼
ソースコードの提示どうもありがとうございます。 希望通りの数値が出力でき カウンター変数に関しては大変勉強になりました。 読み込んだbyteに関しての処理はこれから 構築していければと思っております。 どうもありがとうございました。