1. 相关类库
Java中为目录和文件建立的相关类库都是File,相当于统一建模了,不过说实话确实差不多,把目录视为一种特殊文件就是了。
常见的目录操作,无非就是新增、删除、重命名、查询子目录,我们编写一个工具类。
2. 目录操作工具类
代码如下:
/**
1. 目录操作工具类
*/
public class DirectoryUtils {
/**
* 创建目录
*/
public static boolean createDirectory(String path) {
File dir = new File(path);
return dir.mkdir();
}
/**
* 删除目录
*/
public static boolean deleteDirectory(String path) {
File dir = new File(path);
return dir.delete();
}
/**
* 重命名目录
*/
public static boolean renameDirectory(String oldPath, String newPath) {
File dir = new File(oldPath);
return dir.renameTo(new File(newPath));
}
/**
* 列出子目录信息
*/
public static File[] getChildrenDirectories(String path) {
File dir = new File(path);
return dir.listFiles();
}
/**
* 测试
*/
public static void main(String[] args) throws IOException, InterruptedException {
// 新增目录测试
DirectoryUtils.createDirectory("D:/dir");
DirectoryUtils.createDirectory("D:/dir/dir1");
DirectoryUtils.createDirectory("D:/dir/dir2");
DirectoryUtils.createDirectory("D:/dir/dir3");
// 重命名测试
DirectoryUtils.renameDirectory("D:/dir/dir1", "D:/dir/dir_1");
DirectoryUtils.renameDirectory("D:/dir/dir2", "D:/dir/dir_2");
// 删除测试
DirectoryUtils.deleteDirectory("D:/dir/dir3");
// 列出子目录
File[] files = DirectoryUtils.getChildrenDirectories("D:/dir");
for (File file : files) {
System.out.println(file.getName());
}
}
}
3. 代码解释
有几个点需要注意:
- 如果父目录不存在,直接创建子目录会返回false,例如如果不存在
D:/dir
,直接创建D:/dir/dir1
会失败。 - 可以使用
/
作为平台无关的路径分隔符,直接Windows等平台 - 也可以使用
\\
作为Windows平台的路径风格符,此时第一个反斜线是转义字符。