Java - Read file by chunks?

有些话、适合烂在心里 提交于 2019-12-17 17:10:59

问题


I know how to read a file by bytes but cannot find a example how to read it in chunks of bytes. I have a byte array, and i want to read the file by 512bytes and send them over a socket.

I have tried by reading total bytes of file and then subtracting 512 bytes until i got a chunk that was less than 512 bytes and signaled EOF and end of transfer.

I am trying to implement a TFTP, where data is sent in 512 byte chunks.

Anyhow would be thankful for a example.


回答1:


You ... read 512 bytes at a time.

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:


You can use the appropriate read() method from the input stream, for example FileInputStream supports a read(byte[]) to read a chunk of bytes.

something like: You may want to wrap the input stream in a BufferedInputStream if you wanted to guarantee 512 byte blocks (the constructor takes a block size argument).

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); 
}



回答3:


Using InputStream you can read in an array of given size and limit the reading to this size.

Read here: http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html



来源:https://stackoverflow.com/questions/9588348/java-read-file-by-chunks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!