2012-03-06 380 views
2

我知道如何按字節讀取文件,但無法找到如何以字節塊讀取的示例。我有一個字節數組,我想通過512bytes讀取文件並通過套接字發送它們。Java - 通過塊讀取文件?

我已經嘗試讀取文件的總字節數,然後減去512字節,直到我得到一個小於512字節的塊併發信號通知EOF和傳輸結束。

我想實現一個TFTP,其中數據以512字節塊發送。

無論如何將感謝一個例子。

回答

4

您......一次讀取512個字節。

char[] myBuffer = new char[512]; 
int bytesRead = 0; 
BufferedReader in = new BufferedReader(new FileReader("foo.txt")); 
while ((bytesRead = in.read(myBuffer,0,512)) != -1) 
{ 
    ... 
} 
+0

不會有字節緩衝區更合適嗎? – 2015-04-29 20:21:51

6

您可以使用從輸入流適當read()方法,例如FileInputStream支持read(byte[])讀取的字節塊。

類似於:如果您希望保證512字節塊(構造函數採用塊大小參數),您可能需要將輸入流包裝在BufferedInputStream中。

byte[] buffer = new byte[512]; 
FileInputStream in = new FileInputStream("some_file"); 
int rc = in.read(buffer); 
while(rc != -1) 
{ 
    // rc should contain the number of bytes read in this operation. 
    // do stuff... 

    // next read 
    rc = in.read(buffer); 
}