一、file.mkdir 和 mkdirs 的区别
在 Java 中,File
类提供了两个方法用于创建目录:mkdir()
和 mkdirs()
。它们的作用有一些关键区别:
① file.mkdir()
创建单级目录。
-
当有多层目录时,只有在父目录已存在的情况下,才能创建最后的目录。
-
假如只有一层目录,则可以创建。
-
返回
true
表示目录创建成功,返回false
表示创建失败(例如,如果父目录不存在或目录已存在)。
② file.mkdirs()
创建多级目录,包括不存在的父目录。
-
如果任何中间目录不存在,
mkdirs()
会递归创建所有必要的父目录。 -
返回值:返回
true
表示目录及其父目录创建成功,返回false
表示创建失败。
举例:
File dir = new File("C:\\parentDir\\subDir\\newDir");
boolean created = dir.mkdir(); // 如果 parentDir 或 subDir 不存在,则创建失败
boolean created = dir.mkdirs(); // 会创建 parentDir 和 subDir,如果它们不存在
二、文件打包成zip
Java 提供了丰富的标准库用于处理 ZIP 文件,其中最主要的是 java.util.zip
包。该包包含了一系列类和接口,用于创建、读取和操作 ZIP 文件。常用的类包括:
ZipInputStream
和ZipOutputStream
:用于顺序读取和写入 ZIP 文件。ZipFile
和ZipEntry
:用于随机访问 ZIP 文件中的条目。
1. 压缩单个文件
在 Java 中实现文件打包成 zip 的过程可以分为以下几个步骤:
创建一个 ZipOutputStream 对象 ---- 使用 ZipEntry 将文件添加到 zip 包中 ---- 将文件内容写入到 ZipOutputStream 中 ---- 关闭 ZipOutputStream 对象
示例:将桌面上的 12.txt 打包成 zip
public class Test {
public static void main(String[] args) {
//文件所在的位置
String filePath = "C:\\Users\\ASUS\\Desktop\\12.txt";
//压缩后文件存放的位置
String zipFilePath = "C:\\Users\\ASUS\\Desktop\\12.zip";
//使用try-with-resources语句来确保流在使用后正确关闭
try (
FileInputStream fileInputStream = new FileInputStream(filePath);
//创建ZipOutputStream对象
FileOutputStream fileOutputStream = new FileOutputStream(zipFilePath);
ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream)
) {
//使用ZipEntry将文件添加到zip包中:表示要添加到zip包中的文件名为"12.txt"
ZipEntry zipEntry = new ZipEntry("12.txt");
zipOutputStream.putNextEntry(zipEntry);
//将文件内容写入到ZipOutputStream中
byte[] buffer = new byte