当我创建文件时,我使用数据输出流一次写入一个“int”:
Database.write(0)
当然,它并没有说 0 它是一个变量,但我打印了它,第一个是 0,所以我以那个为例。
现在我不是 100% 确定,但只使用我的文件现在应该包含的那行代码:
0000 0000 0000 0000 0000 0000 0000 0000
对吗?
因此,当我尝试使用以下方法读取前 4 个字节时:
RandomAccessFile raf = new RandomAccessFile("Database", "r");
raf.seek(0);
byte[] ByteArr = new byte[4];
raf.read(ByteArr, 0, ByteArr.length);
ByteArr 应该只包含 0?
我打印了 Byte[],这就是我得到的:
0
4
13
-126
亲切的问候困惑队长
最佳答案
write()
方法将单个字节写入文件。它的参数是一个 int,但该 int 被假定在 [0, 255] 范围内。
如果您想将完整的 4 字节 int 写入文件,请使用 writeInt()
方法。否则,要再次检索值 0,请使用 read()
从文件中读取一个字节。
顺便说一句,RandomAccessFile 可以处理读取和写入,因此您应该同时使用它。
关于java - 从二进制文件读取或创建它时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062380/