java - 从二进制文件读取或创建它时出现问题

标签 java dataoutputstream randomaccessfile

当我创建文件时,我使用数据输出流一次写入一个“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/

相关文章:

java - 如何为在我的网站注册的任何人自动创建电子邮件地址?

java - 如何设置tomcat应用服务器的home执行目录?

java - 将字节数组保存到文件时显示丑陋的字符

java - DataOutputStream#writeBytes(String) 与 BufferedWriter#write(String)

java - 用 Java 读取随机访问文件

Android:使用 RandomAccessFile 从内部存储访问文件

java - 在sparkSession上注册两个同名的udf

java - 如何知道我们是否收到了带有 DatagramPacket 的内容?

java - 使用junit测试从文本和二进制文件读取以及写入文本和二进制文件

android - 当 MediaPlayer 在不同的位置播放时,如何从只读的 RandomAccessFile 中读取