如何解决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 举报,一经查实,本站将立刻删除。