我想从现有文件中的某个任意位置获取Stream,例如,我需要从/向第101个字节开始的文件读取/写入。 使用类似的东西是否安全?
final FileInputStream fin = new FileInputStream(f);
fin.skip(100);
Skip javadoc告诉它有时可能会跳过比指定数字少的字节数。 那我该怎么办?
答案 0 :(得分:3)
你无法使用FileInputStream编写。如果要写入文件中的任意位置,则需要使用RandomAccessFile。 很遗憾,没有简单的方法可以将RandomAccessFile用作InputStream / OutputStream (看起来@aix可能有一个很好的建议,可以将RandomAccessFile调整为InputStream / OutputStream),但是有各种在线可用的示例适配器
另一种选择是使用FileChannel。您可以直接设置FileChannel的位置,然后使用Channels实用程序方法在Channel上获取InputStream / OutputStream适配器。
答案 1 :(得分:1)
以下内容如何:
final RandomAccessFile raf = new RandomAccessFile(f, mode);
raf.seek(100);
final FileInputStream fin = new FileInputStream(raf.getFD());
// read from fin