我想从现有文件中的某个任意位置获取流,例如,我需要从/写入/写入/写入第101个字节的文件。使用类似的东西安全吗?

final FileInputStream fin = new FileInputStream(f);
fin.skip(100);

跳过Javadoc 告诉有时它可能会跳过比指定的字节数少。那我该怎么办?

有帮助吗?

解决方案

以下情况如何:

final RandomAccessFile raf = new RandomAccessFile(f, mode);
raf.seek(100);
final FileInputStream fin = new FileInputStream(raf.getFD());
// read from fin

其他提示

您不能使用FileInputStream编写。如果要写入文件中的任意位置,则需要使用RandomAccessFile。 不幸的是,没有简单的方法可以将RandomAccessFile用作InputStream/OutputStream (看起来@AIX可能有一个很好的建议,可以将RandomAccessFile适应InputStream/outputStream),但是在线有各种示例适配器。

另一种选择是使用Filechannel。您可以直接设置Filechannel的位置,然后使用通道实用方法来获取频道顶部的InputStream/OutputStream适配器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top