Java中通过流下载文件

写在前面: 我是 「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的

这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

用知识改变命运,让我们的家人过上更好的生活

相关文章: 使用Java以zip形式批量下载文件、压缩文件

文章目录

1. 步骤

  1. 保证创建一个新文件
  2. 创建大小为1024的buffer数组
  3. 创建文件输出流
  4. 创建字节缓冲输出流
  5. 文件逐步写入本地
    5.1 先读出来保存到buffer数组中
    5.2 然后从 buffer数组中写出数据保存到本地
  6. 最后关闭流释放资源(反向关闭)

2. 代码实现

/**
 * 通过流下载文件
 *
 * @param bis      res.bodyStream()
 * @param filePath 文件路径
 * @param fileName 文件名称
 */
public static void downloadFileByStream(BufferedInputStream bis, String filePath, String fileName) {
    
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String fullPath = basePath + sdf.format(new Date()) + File.separator + filePath + File.separator + fileName;
    try {
    
    
        // 1. 保证创建一个新文件
        File file = new File(fullPath);
        if (!file.getParentFile().exists()) {
    
    
            file.getParentFile().mkdirs();
        }
        if (file.exists()) {
    
    
            file.delete();
        }
        file.createNewFile();

        // 2. 创建大小为1024的buffer数组
        byte[] buffer = new byte[1024];

        int readLength;
        // 3. 创建文件输出流,FileOutputStream流以写入数据到File对象表示的文件
        FileOutputStream fos = new FileOutputStream(new File(fullPath));
        // 4. 创建字节缓冲输出流
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        // 5. 文件逐步写入本地
        // 5.1 先读出来保存到 buffer数组中
        while ((readLength = bis.read(buffer, 0, 1024)) != -1) {
    
    
            // 5.2 然后从 buffer数组中写出数据保存到本地
            bos.write(buffer, 0, readLength);
        }
        // 6. 最后关闭流释放资源(反向关闭)
        bos.close();
        fos.close();
        bis.close();
    } catch (IOException e) {
    
    
        e.printStackTrace();
    }
}

由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!

猜你喜欢

转载自blog.csdn.net/weixin_43570367/article/details/114363660