我知道如何按字節讀取文件,但無法找到如何以字節塊讀取的示例。我有一個字節數組,我想通過512bytes讀取文件並通過套接字發送它們。Java - 通過塊讀取文件?
我已經嘗試讀取文件的總字節數,然後減去512字節,直到我得到一個小於512字節的塊併發信號通知EOF和傳輸結束。
我想實現一個TFTP,其中數據以512字節塊發送。
無論如何將感謝一個例子。
我知道如何按字節讀取文件,但無法找到如何以字節塊讀取的示例。我有一個字節數組,我想通過512bytes讀取文件並通過套接字發送它們。Java - 通過塊讀取文件?
我已經嘗試讀取文件的總字節數,然後減去512字節,直到我得到一個小於512字節的塊併發信號通知EOF和傳輸結束。
我想實現一個TFTP,其中數據以512字節塊發送。
無論如何將感謝一個例子。
您......一次讀取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)
{
...
}
使用InputStream
您可以讀取給定大小的數組,並將讀數限制爲此大小。
這裏閱讀:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html
您可以使用從輸入流適當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);
}
不會有字節緩衝區更合適嗎? – 2015-04-29 20:21:51