2011-10-18 31 views
1

我想從現有文件中的某個任意位置獲取流,例如我需要從第101個字節開始讀取/寫入文件。 使用類似的東西安全嗎?Java從文件中的任意位置打開流

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

Skip javadoc表明它有時可能跳過比指定的更少的字節數。 那我該怎麼做?

回答

1

如何如下:

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

您無法使用FileInputStream進行寫入。如果要寫入文件中的任意位置,則需要使用RandomAccessFile。 eun sorry,沒有簡單的方法來使用RandomAccessFile作爲InputStream/OutputStream (看起來像@aix可能會對將RandomAccessFile修改爲InputStream/OutputStream有一個很好的建議),但是有各種可用的在線示例適配器。

另一種選擇是使用FileChannel。您可以直接設置FileChannel的位置,然後使用Channels實用程序方法在Channel上獲取InputStream/OutputStream適配器。

+0

感謝您指出我到的RandomAccessFile的方向。最終RandomAccessFile是我所需要的,但@aix給出了我一直在尋找的確切答案。 – Vic