Java - 由块读取文件?

时间:2012-03-06 17:03:01

标签: java sockets io inputstream

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

我试过通过读取文件的总字节数然后减去512个字节,直到我得到一个小于512字节的块,并发出信号EOF和传输结束。

我正在尝试实现TFTP,其中数据以512字节的块发送。

无论如何都要感谢一个例子。

3 个答案:

答案 0 :(得分: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); 
}

答案 1 :(得分:5)

你...一次读取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)
{
    ...
}

答案 2 :(得分:-1)

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

请在此处阅读:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html