私は次のコードを実行しています:
public class SkipTest {
public static void main(String[] args) throws IOException {
FileOutputStream fileout = new FileOutputStream("./foo");
DataOutputStream output = new DataOutputStream( fileout );
output.writeLong(12345678L);
output.writeLong(87654321L);
output.writeInt(1234);
output.flush();
output.close();
FileInputStream input = new FileInputStream("./foo");
DataInputStream datain = new DataInputStream(input);
System.out.println(datain.readLong());
System.out.println(datain.readLong());
long skipped = datain.skip(8);
System.out.printf("Attempting to skip 8 bytes, actually skipped %d.\n", skipped);
datain.close();
}
}
ドキュメントによると、の戻り値.skip()
は実際にスキップされたバイト数であり、要求された数よりも少ない場合があります。ファイルが外部でわずか20バイトであることを確認しましたが、上記のコードを実行すると、次の出力が得られます。
12345678
87654321
Attempting to skip 8 bytes, actually skipped 8.
それで、これはバグですか、それとも私は何か間違ったことをしていますか?ファイルに4バイトしか残っていない場合、どうすれば8バイトをスキップできますか?