【发布时间】:2026-01-25 07:00:01
【问题描述】:
使用 Java 的 I/O 方法读取相对较大的文件最快的方法是什么?我当前的解决方案使用BufferedInputStream 保存到分配有1024 个字节的字节数组。然后将每个缓冲区保存在ArrayList 中以供以后使用。整个过程通过单独的线程(callable-interface)调用。
虽然不是很快。
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.");
【问题讨论】:
-
查看 Apache Commons 库以获取更多选项。要确定速度,请查看 O'Reilly 的 Java Performance Tuning 一书。
-
目前您忽略了
read()调用返回的值。 不要那样做。
标签: java performance file-io