我有一二进制文件,存储了2942564对int类型的变量
我现在想把这些数据读取到两个2942564个int变量组成的数组中
于是使用了以下代码:
final int DATASIZE=2942564;
try{
DataInputStream input=new DataInputStream(new FileInputStream("Data")); for(int x=0;x<DATASIZE;x++)
{
arrDty[x]=input.readInt();
arrCanDo[x]=input.readInt();
}
input.close();
}catch(java.io.IOException e)
{
javax.swing.JOptionPane.showMessageDialog(null,"无法读取文件,\n程序即将退出.");
System.exit(0);
}读取进来的内容完全正常,只是速度有些慢的惊人。20M左右的文件,读起来居然用了半分钟,而且运行时候CPU会达到100%。硬盘灯几乎不闪。请问有没有高人知道造成速度慢的原因是什么?如何改良?
我现在想把这些数据读取到两个2942564个int变量组成的数组中
于是使用了以下代码:
final int DATASIZE=2942564;
try{
DataInputStream input=new DataInputStream(new FileInputStream("Data")); for(int x=0;x<DATASIZE;x++)
{
arrDty[x]=input.readInt();
arrCanDo[x]=input.readInt();
}
input.close();
}catch(java.io.IOException e)
{
javax.swing.JOptionPane.showMessageDialog(null,"无法读取文件,\n程序即将退出.");
System.exit(0);
}读取进来的内容完全正常,只是速度有些慢的惊人。20M左右的文件,读起来居然用了半分钟,而且运行时候CPU会达到100%。硬盘灯几乎不闪。请问有没有高人知道造成速度慢的原因是什么?如何改良?
try{
DataInputStream input=new DataInputStream(new BufferedInputStream((new FileInputStream("Data"))); for(int x=0;x <DATASIZE;x++)
{
arrDty[x]=input.readInt();
arrCanDo[x]=input.readInt();
}
input.close();
}catch(java.io.IOException e)
{
javax.swing.JOptionPane.showMessageDialog(null,"无法读取文件,\n程序即将退出.");
System.exit(0);
} 这样试试...
BufferedReader一样(只不过BufferedReader只能对行读取)