我想從現有文件中的某個任意位置獲取流,例如我需要從第101個字節開始讀取/寫入文件。 使用類似的東西安全嗎?Java從文件中的任意位置打開流
final FileInputStream fin = new FileInputStream(f);
fin.skip(100);
Skip javadoc表明它有時可能跳過比指定的更少的字節數。 那我該怎麼做?
我想從現有文件中的某個任意位置獲取流,例如我需要從第101個字節開始讀取/寫入文件。 使用類似的東西安全嗎?Java從文件中的任意位置打開流
final FileInputStream fin = new FileInputStream(f);
fin.skip(100);
Skip javadoc表明它有時可能跳過比指定的更少的字節數。 那我該怎麼做?
如何如下:
final RandomAccessFile raf = new RandomAccessFile(f, mode);
raf.seek(100);
final FileInputStream fin = new FileInputStream(raf.getFD());
// read from fin
您無法使用FileInputStream進行寫入。如果要寫入文件中的任意位置,則需要使用RandomAccessFile。
eun sorry,沒有簡單的方法來使用RandomAccessFile作爲InputStream/OutputStream
(看起來像@aix可能會對將RandomAccessFile修改爲InputStream/OutputStream有一個很好的建議),但是有各種可用的在線示例適配器。
另一種選擇是使用FileChannel。您可以直接設置FileChannel的位置,然後使用Channels實用程序方法在Channel上獲取InputStream/OutputStream適配器。
感謝您指出我到的RandomAccessFile的方向。最終RandomAccessFile是我所需要的,但@aix給出了我一直在尋找的確切答案。 – Vic