2012-03-06 113 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); 
}