文章由来:学习笔记
File是JDK官方提供的一个类,可以对操作系统的文件增删改查的操作,在 package java.io中,有丰富的方法可以使用。
1.使用File 创建一个文件,创建一个文件目录
其中mkdirs()可以创建多级文件目录,而mkdir()只创建出当前一级的文件目录。
File file = new File("D:\\test\\abc\\a.txt");
if(!file.exists()){
file.mkdirs();//创建出文件夹
}
createNewFile()可以创建文件但是不能创建目录,如果存在同名文件则不会再创建
// 创建出文件a.txt
File file = new File("D:\\test\\abc\\a.txt");
file.createNewFile();
2.根据目录路径创建出多级文件夹和文件
// 根据url路径创建出多级文件夹和文件
String pathUrl = "D:\\test\\abc\\bc\\a.txt";
int lastIndexOf = pathUrl.lastIndexOf("\\");
// 截取出最后的a.txt文件,获得文件目录
String dirPath = pathUrl.substring(0, lastIndexOf);
File file = new File(dirPath);
if (!file.exists()) {
//创建出多级目录
file.mkdirs();
}
File fileText = new File(pathUrl);
boolean newFile = fileText.createNewFile();
3.使用File修改文件名
renameTo()不光可以修改文件名还可以剪切移动文件或者文件目录。
File file = new File("D:\\test\\a.txt");
File newfile = new File("D:\\test\\b.txt");
if(file.renameTo(newfile)){
System.out.println("重命名成功...");
}
// 移动文件目录或者文件
File file = new File("D:\\test\\bc");
File newfile = new File("D:\\test\\abc\\bc");
if(file.renameTo(newfile)){
System.out.println("将bc这个文件夹剪切到abc这个文件夹下");
}
4.使用File删除一个文件
delete()删除文件只能一个个删除,如果文件目录下还有子目录或者子文件是删除不成功的。
File file = new File("D:\\test\\abc\\a.txt");
if(file.delete()){
System.out.println("删除成功!!!");
}
5.拷贝文件
使用java.nio.file包下面的Files.copy()实现文件的拷贝,存在问题如果拷贝文件目录,无法拷贝文件目录下的文件,相当于`浅拷贝`了。
File sourceFile = new File("D:\\test\\abc\\a.txt");
File targetFile = new File("D:\\test\\abc\\b.txt");
Files.copy(sourceFile.toPath(), targetFile.toPath());
6.筛选出某个文件目录下的指定后缀文件
listFiles()可以获得文件目录下的所有文件和文件目录包括所有子目录,list()可以获得当前文件目录下的所有文件名。
public static void main(String[] args) throws IOException {
String pathUrl = "D:\\abc";
File file = new File(pathUrl);
//获取当前文件夹下的文件和文件目录的名称
String[] list = file.list();
//找出当前目录下 .jar .zip文件
JarFilter jarFilter = new JarFilter();
ArrayList<List<String>> allJarOrZip = new ArrayList<>();
HashMap<String, List> map = new HashMap<>();
//可重写接口,根据自己需求筛选出想要的文件,如.xlsx .png
FilenameFilter filenameFilter = (dir, name) -> {
String var3 = name.toLowerCase();
return var3.endsWith(".xlsx");
};
FileFilter(file,filenameFilter,map);
System.out.println(map);
}
/**
* @Description: 遍历指定路径下某些文件
* @Data:[file, jarFilter, allJarOrZip]
* @return: void
* @Author: NiKaBoy
* @Email: 123456789@qq.com
* @Date: 22-09-258 22:13:52
*/
public static void FileFilter(File file,FilenameFilter jarFilter,Map<String, List> allJarOrZip){
File[] files = file.listFiles(jarFilter);
if(files == null){
return;
}
if(files.length > 0){
List<String> collect = Arrays.stream(files).map(f -> f.getName()).collect(Collectors.toList());
allJarOrZip.put(file.getPath(),collect);
}
File[] roots = file.listFiles();
for (int i = 0; i < roots.length; i++) {
File root = roots[i];
FileFilter(root,jarFilter,allJarOrZip);
}
}