我在读取数据的过程中,Java '保存'您的字节读取,还是我必须使用偏移量?
FileInputStream确实可以保存您的位置。
如果你有一个3字节的文件,0xff 0x00 0x0c
,调用:
System.out.println(fis.read());
System.out.println(fis.read());
System.out.println(fis.read());
将输出:
255
0
12
你只需模仿@WhiteFang的写作解决方案。
FileInputStream fis = new FileInputStream(files[0]);
DataInputStream dis = new DataInputStream(new BufferedInputStream(fis));
int numFiles = dis.readInt();
int numBytesInName = dis.readInt();
String filename = dis.readUTF();
long numBytesInFile = dis.readLong();
// loop to read bytes into a byte[]
顺便说一句,使用writeUTF/readUTF使得写文件名的长度是多余的。此外,如果您不打算在这些信息之后写入任何内容,则不需要记录文件的数量。
如何标记你的位置http://download.oracle.com/javase/6/docs/api/java/io/InputStream.html#mark(int)