Fastest way of reading relatively huge byte-files in Java

后端 未结 3 1273
抹茶落季
抹茶落季 2020-11-30 22:59

what\'s the probably fastest way of reading relatively huge files with Java\'s I/O-methods? My current solution uses the BufferedInputStream saving to an byte-a

3条回答
  •  离开以前
    2020-11-30 23:29

    Don't use available(): it's not reliable. And don't ignore the result of the read() method: it tells you how many bytes were actually read. And if you want to read everything in memory, use a ByteArrayOutputStream rather than using a List:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int read;
    while ((read = reader.read(buffer)) >= 0) {
        baos.write(buffer, 0, read);
    }
    byte[] everything = baos.toByteArray();
    

    I think 1024 is a bit small as a buffer size. I would use a larger buffer (something like 16 KB or 32KB)

    Note that Apache commons IO and Guava have utility methods that do this for you, and have been optimized already.

提交回复
热议问题