Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java是否在InputStream中保存读取位置?_Java_Byte_Offset - Fatal编程技术网

Java是否在InputStream中保存读取位置?

Java是否在InputStream中保存读取位置?,java,byte,offset,Java,Byte,Offset,我正在读取数据,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的写作解决方案 FileInputS

我正在读取数据,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会使写入文件名的长度变得多余。此外,如果您不打算在这些信息之后写入任何内容,则无需记录文件数。

哦,来吧!发布最后一个问题后,您可以阅读文档并进行尝试。您将很快看到,在读取一些数据后,该位置将得到提升。也许你想检查一下。