私はインデックスを渡すことによって構造化されたバイナリファイルのセクションを読んでする必要があります。ただし、DataInputStreamはマーク/リセットをサポートしていません。私は何をしたいのですか?私はこれを簡単に達成できる他のクラスはありますか?DataInputStreamをリセット/マークをサポートしていない場合は、再度バイナリファイルの一部の読み方
import java.io.*;
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
class Test {
public static int getInt(DataInputStream stream, int index) throws IOException {
int offset = index * 4; // size of int
stream.reset();
stream.skip(offset);
return stream.readInt();
}
public static void main(String[] args) {
String filename = "test.data";
try {
DataOutputStream ostream = new DataOutputStream(new FileOutputStream(filename));
for (int i=0; i<10; i++) {
ostream.writeInt(i);
}
ostream.close();
DataInputStream istream = new DataInputStream(new FileInputStream(filename));
istream.mark(0);
int i0 = getInt(istream, 0);
int i3 = getInt(istream, 3);
int i5 = getInt(istream, 5);
System.out.printf("i0 = %d, i3 = %d, i5 = %d\n", i0, i3, i5);
istream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
私が本当に必要なのあなたが順序でデータを読んでいると、リセット/マークを必要としていないようにRandomAccessFile – user1040876
であることがわかりました。私は物事を必要以上に複雑にしません。 –