我有一二进制文件,存储了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%。硬盘灯几乎不闪。请问有没有高人知道造成速度慢的原因是什么?如何改良?

解决方案 »

  1.   

    final int DATASIZE=2942564; 
    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); 
            } 这样试试...
      

  2.   

     DataInputStream input=new DataInputStream(new BufferedInputStream((new FileInputStream("Data"))); 
      

  3.   

        既然你是用DataInputStream,那么就用MappedByteBuffer() 和FileChannel()吧,原理和
    BufferedReader一样(只不过BufferedReader只能对行读取)