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

发布于 2024-11-05 04:06:30 字数 46 浏览 0 评论 0原文

我正在读取数据,Java 是否“保存”您读取的字节,或者我是否必须使用偏移量?

I'm in the process of reading data, does Java 'save' your bytes read, or do I have to use an offset?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

血之狂魔 2024-11-12 04:06:30

FileInputStream 确实保存了您的位置。

如果你有一个3字节的文件,0xff 0x00 0x0c,调用:

System.out.println(fis.read());
System.out.println(fis.read());
System.out.println(fis.read());

将输出:

255
0
12

A FileInputStream does indeed save your position.

If you have a file with 3 bytes, 0xff 0x00 0x0c, calling:

System.out.println(fis.read());
System.out.println(fis.read());
System.out.println(fis.read());

Will output:

255
0
12
夜光 2024-11-12 04:06:30

你只是为了镜像@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 会使写入文件名的长度变得多余。此外,如果您不打算在此信息之后写入任何内容,则无需记录文件数。

You just to mirror @WhiteFang's solution for writing.

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[]

BTW, using writeUTF/readUTF makes writing the length of the file name redundant. Additionally, you don't need to record the number of files if you are not going to write anything after this information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文