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"(并省略对您所写内容的修剪调用)。

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