Java开发

BufferedOutputStream 写入文件

2022-11-18  本文已影响0人  _浅墨_

BufferedOutputStream 为输出流提供了一个缓冲区,这样可以确保不是每次读取一个字节,而是每次读取一大块儿内容到缓冲区中,从而大大提高IO速度。这通常要比每次读取单字节要快得多。

推荐方式:

   //将文件流(InputStream)写入文件
  long size = 0;
  BufferedInputStream in = new     
  BufferedInputStream(input);
  BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(targetFilePath));
     int len = -1;
     byte[] b = new byte[1024];
     while((len = in.read(b)) != -1){
          out.write(b, 0, len);
          size += len;
     }
     in.close();
     out.close();

下面这种方式不行,如果文件较大,这样写会非常耗时。比如 160M 的文件,while 要循环 160 * 1024 * 1024 次....

    data = new byte[input.available()];
    int len = 0;
    fileOutputStream = new FileOutputStream(targetFilePath,true);
    while ((len = input.read(data)) != -1) {
         fileOutputStream.write(data, 0, len);
    }
    System.out.println("下载文件成功");
    log.info("下载文件成功 ossFileId = {} targetFilePath = {}",ossFileId,targetFilePath);
上一篇下一篇

猜你喜欢

热点阅读