0

2回スキップしてファイルから文字を読み取っています

     fis = new FileInputStream("C:/data/25130.in ");
     fis.skip(24305);//This position contains _(UnderScore)
     l=fis.read();
     fis.skip(24312);//This position also contains _(Underscore)
     i = fis.read();
     ch= (char)l;
     c = (char)i;
     System.out.print("Ch: "+ch);//Returns Underscore
     System.out.print("C: "+c); // Returns 9 instead of UnderScore

次のように最初のスキップを削除すると

     fis = new FileInputStream("C:/data/25130.in ");         
     fis.skip(24312);//This position also contains _(underscore)
     i = fis.read();
     c = (char)i;
     System.out.print("C: "+c); // Now it returns Underscore

2 文字を 2 つの位置で読み取るつもりです..どこに問題がありましたか

4

2 に答える 2

2

fis.skip(24312)その数の文字をスキップします(24312バイトを読み取り、それらを破棄します....)

あなたがしたいことは、入力ストリームを「配置」し、(24312 - 24305) バイトだけを捨てることです。fis.skip(7)

編集: うーん、lutzh は正しい、あなたがしたいfis.skip(6)が....

本当にやりたいことは、RandomAccessFileを使用し、seek(position) メソッドを使用することです...

于 2013-10-22T10:31:21.413 に答える
0

FileInputStream.skip は指定された位置に行かず、指定されたバイト数をスキップすると思います。したがって、2 回目のスキップの後、48617 に加えて、実際に読んだもう 1 つになります。

2 番目のスキップのパラメーターとして 6 を試してください。

于 2013-10-22T10:33:08.993 に答える