请检查代码,我所做的是增加缓冲区大小并在接触到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 )
{
}
}