我正在将数据从一个文件复制到另一个文件。
这需要更多时间。什么原因?
我的代码在这里public void copyData(InputStream in,OutputStream out)抛出IOException
    {
        尝试
        {
            in = new CipherInputStream(in,dcipher);
            int numRead = 0;
            byte [] buf =新的byte [512];
            而(((numRead = in.read(buf))> = 0)
            {
                out.write(buf,0,numRead);
            }
            out.close();
            附寄();
        }
        捕获(java.io.IOException e)
        {
        }
    }

最佳答案

请检查代码,我所做的就是增加缓冲区大小,并在数据达到1 MB时立即刷新数据,这样就不会遇到内存不足错误。

原因主要是由于较小的缓冲区大小,这需要花费时间来写入较小的信息字节。最好一次放一大块。

您可以根据需要修改这些值。

public void copyData( InputStream in, OutputStream out ) throws IOException
{
    try
    {
        int numRead = 0;
        byte[] buf = new byte[102400];
        long total = 0;
        while ( ( numRead = in.read( buf ) ) >= 0 )
        {
            total += numRead;
            out.write( buf, 0, numRead );

            //flush after 1MB, so as heap memory doesn't fall short
            if (total > 1024 * 1024)
             {
                total = 0;
                out.flush();
             }
        }
        out.close();
        in.close();
    }
    catch ( java.io.IOException e )
    {
    }
}

07-24 09:49