使用Java的I/O方法,最快的读取相对较大文件的方法是什么? 我目前的解决方案使用BufferedInputStream
将数据保存到一个分配了1024个字节的字节数组中。 然后把每个缓冲区保存在ArrayList
中以备后用。 整个过程通过一个单独的线程(callable接口)调用。
不过速度不太快。
ArrayList<byte[]> outputArr = new ArrayList<byte[]>();
try {
BufferedInputStream reader = new BufferedInputStream(new FileInputStream (dir+filename));
byte[] buffer = new byte[LIMIT]; // == 1024
int i = 0;
while (reader.available() != 0) {
reader.read(buffer);
i++;
if (i <= LIMIT){
outputArr.add(buffer);
i = 0;
buffer = null;
buffer = new byte[LIMIT];
}
else continue;
}
System.out.println("FileReader-Elements: "+outputArr.size()+" w. "+buffer.length+" byte each.");
read()
调用返回的值。请勿这样做。 - Jon Skeet