Reading file chunk by chunk

david picture david · Jun 20, 2012 · Viewed 27.1k times · Source

I want to read a file piece by piece. The file is split up into several pieces which are stored on different types of media. What I currently do is call each seperate piece of the file and then merge it back to the original file.

The issue is that I need to wait until all the chunks arrive before I can play/open the file. Is it possible to read the chunks as they are arriving as opposed to waiting for them to all arrive.

I am working on media file (movie file).

Answer

cklab picture cklab · Jun 20, 2012

See InputSteram.read(byte[]) for reading bytes at a time.

Example code:

try {
    File file = new File("myFile");
    FileInputStream is = new FileInputStream(file);
    byte[] chunk = new byte[1024];
    int chunkLen = 0;
    while ((chunkLen = is.read(chunk)) != -1) {
        // your code..
    }
} catch (FileNotFoundException fnfE) {
    // file not found, handle case
} catch (IOException ioE) {
    // problem reading, handle case
}