Java – 由块读取文件?

我知道如何按字节读取文件,但无法找到如何以字节块读取它的示例。 我有一个字节数组,我想读取512字节的文件,并通过套接字发送它们。

我试过通过读取文件的总字节数,然后减去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) { ... } 

您可以使用输入流中的相应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); } 

使用InputStream您可以读取给定大小的数组,并将读数限制为此大小。

在这里阅读: http : //docs.oracle.com/javase/7/docs/api/java/io/InputStream.html