微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

seek() 方法不适用于 Java 中的 InputStream available() 方法

如何解决seek() 方法不适用于 Java 中的 InputStream available() 方法

我正在解决这个 java 问题,我必须写入系统上的文本文件而不调整该文件上的现有文本数据,我使用 randomAceessFile.seek((inputStream.available()+1)); 将我的指针指向现有数据之前的 1 个空格,然后我使用 randomAceessFile.write((newData.trim()).getBytes()); 写入该文件,现在的问题是,此操作后文件数据在现有数据和添加的新数据之间应该有空间,但下面的代码只向文件添加了新数据和 { {1}} 而不是数据之间的空格。

\00

这个程序给出的输出

现有数据 \00文件中的新数据

解决方法

零字节是因为您寻求现有长度加一。现有字节从 0 到 length-1 编号,因此您需要精确地查找现有长度。

也就是说,在偏移量“现有长度”处没有专门写入文件,因此您得到一个零字节。

没有人会神奇地插入一个以前不存在的空格(0x20 字节)。你需要这样做。这很简单:newData = " new data on file"(并省略对您所写内容的修剪调用)。

也许您之前阅读的内容是在“位置”的意义上使用“空间”一词?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。