2011-05-04 49 views
0

我正在讀取數據,Java是否'保存'讀取的字節,還是我必須使用偏移?Java是否將讀取位置保存在InputStream中?

+1

哦,來吧!在您發佈最後一個問題後,您可以閱讀文檔並嘗試。讀完一些數據後,你會看到足夠快的速度,這個位置變得更加先進。也許你會想檢查[I/O教程](http://download.oracle.com/javase/tutorial/essential/io/)。 – 2011-05-04 10:27:45

回答

3

FileInputStream的確保存您的位置。

如果你有3個字節,0xff 0x00 0x0c文件,要求:

System.out.println(fis.read()); 
System.out.println(fis.read()); 
System.out.println(fis.read()); 

將輸出:

255 
0 
12 
2

你只是爲了反映@ WhiteFang的寫作解決方案。

FileInputStream fis = new FileInputStream(files[0]); 
DataInputStream dis = new DataInputStream(new BufferedInputStream(fis)); 
int numFiles = dis.readInt(); 
int numBytesInName = dis.readInt(); 
String filename = dis.readUTF(); 
long numBytesInFile = dis.readLong(); 
// loop to read bytes into a byte[] 

順便說一句,使用writeUTF /的readUTF使得編寫的文件名冗餘的長度。另外,如果在這些信息之後不打算寫任何內容,則不需要記錄文件的數量。