FileOutputStream很慢.怎么能更快地完成?

use*_*133 1 java fileoutputstream

        File file = new File(directory + ".zip");
        if(file.exists()) {
            return;
        }
        url = new URL("http://someURL" +  session);
        is = url.openStream();
        fos = new FileOutputStream(file);
        int data;
        //Leser forbi det første tegnet
        is.read();
        while ((data = is.read()) != -1) {
                fos.write(data);
        }
        is.close();
        fos.close();
Run Code Online (Sandbox Code Playgroud)

当我调用这种方法时,我的程序冻结了20.如何更快地完成这个过程?

shu*_*ang 8

使用缓冲区一次传输一小段数据,而不是一次读取一个字节.这对于大文件来说将更加节省资源.我想你的zip文件很大.

byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = is.read(buffer))) {
   fos.write(buffer, 0, n);
}
Run Code Online (Sandbox Code Playgroud)