写在前面: 我是 「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。
技术是开源的、知识是共享的
。
这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。
用知识改变命运,让我们的家人过上更好的生活
。
相关文章: 使用Java以zip形式批量下载文件、压缩文件
1. 步骤
- 保证创建一个新文件
- 创建大小为1024的buffer数组
- 创建文件输出流
- 创建字节缓冲输出流
- 文件逐步写入本地
5.1 先读出来保存到buffer数组中
5.2 然后从 buffer数组中写出数据保存到本地- 最后关闭流释放资源(反向关闭)
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();
}
}
由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!