有一个6M的二进制文件,都是float型,有300000个数
用
for(int i=0; i<300000; i++)
xxx[i] = xxx.readFloat();
需要读好几分钟
但是用c
fread(xxx, 4, 300000, fp);
只要两三秒就好了
请问Java有什么好的读取方法没,谢谢
[b]问题补充:[/b]
回答请讲得具体点
不要只说用buffer,我只知道那个读进来的是byte,而我要的是float
有一个6M的二进制文件,都是float型,有300000个数
用
for(int i=0; i<300000; i++)
xxx[i] = xxx.readFloat();
需要读好几分钟
但是用c
fread(xxx, 4, 300000, fp);
只要两三秒就好了
请问Java有什么好的读取方法没,谢谢
[b]问题补充:[/b]
回答请讲得具体点
不要只说用buffer,我只知道那个读进来的是byte,而我要的是float
收起
[code="java"]import java.io.*;
public class z {
public static void main(String[] args) throws Throwable {
String path = "d:/somefile.dat";
DataInputStream dis = new DataInputStream(
new BufferedInputStream(
new FileInputStream(path),
6 * 1024 * 1024 // 6M buffer size
)
);
float[] arr = new float[300000];
for (int i = 0; i < arr.length; i++) {
arr[i] = dis.readFloat();
}
dis.close();
}
}[/code]
例如说这样读就应该比楼主直接用DataInputStream套在FileInputStream上要快些。不过最好不要真的设6M的buffer size,因为这种大数组会放在大对象堆里,要过比较久才被回收的。
报告相同问题?