01、这是进阶java的博客总结,有各种课程的学习总结和代码总结,以后再做一个自己的工具箱博客总结,希望大家努力学习加油呀
02、File类
--除了 java.lang[主要是各种基本类型,不需要导入] java.util[各种基础工具,需要导入的],现在又加入了一个新的 java.io。
--java.io.Files类是文件和目录路径名的抽象,主要用于文件和目录的创建、查找和删除等操作
--构造方法:
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
--示例:
// 文件路径名
String pathname = "D:\\aaa.txt";
File file1 = new File(pathname);
// 文件路径名
String pathname2 = "D:\\aaa\\bbb.txt";
File file2 = new File(pathname2);
// 通过父路径和子路径字符串
String parent = "d:\\aaa";
String child = "bbb.txt";
File file3 = new File(parent, child);
// 通过父级File对象和子路径字符串
File parentDir = new File("d:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child);
--注意:
1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
2. 无论该路径下是否存在文件或者目录,都不影响File对象的创建。
3、File类相关方法--获取相关信息
--public String getAbsolutePath() :返回此File的绝对路径名字符串。
--public String getPath() :将此File转换为路径名字符串。
--public String getName() :返回由此File表示的文件或目录的名称。
--public long length() :返回由此File表示的文件的长度。
--File类获取文件/目录信息的方法
// 获取功能的方法
File f = new File("D:/代码/java/helloworld/file_data/file01.txt");
System.out.println("文件绝对路径:"+f.getAbsolutePath());
System.out.println("文件构造路径:"+f.getPath());
System.out.println("文件名称:"+f.getName());
System.out.println("文件长度:"+f.length()+"字节");
File f2 = new File("D:/代码/java/helloworld/file_data");
System.out.println("目录绝对路径:"+f2.getAbsolutePath());
System.out.println("目录构造路径:"+f2.getPath());
System.out.println("目录名称:"+f2.getName());
System.out.println("目录长度:"+f2.length());
--记住 java项目中一个文件位置相对路径是从项目根文件夹开始算起的
File f2 = new File("./src/com/version2/FilesTest.java");
System.out.println("目录绝对路径:"+f2.getAbsolutePath());
System.out.println("目录构造路径:"+f2.getPath());
System.out.println("目录名称:"+f2.getName());
System.out.println("目录长度:"+f2.length());
4、File类相关方法--判断功能的方法
--public boolean exists() :此File表示的文件或目录是否实际存在。
--public boolean isDirectory() :此File表示的是否为目录。
--public boolean isFile() :此File表示的是否为文件。
--代码示例:
// 判断功能的方法
File f3 = new File("D:/代码/java/helloworld/src/com/version2/FilesTest.java");
System.out.printf("判断文件是否存在" + f3.exists() + "\n");
System.out.printf("判断是否为文件夹" + f3.isDirectory() + "\n");
System.out.printf("判断是否为文件" + f3.isFile() + "\n");
5、Files类相关方法--创建删除功能的方法
--public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
--public boolean delete() :删除由此File表示的文件或目录。
--public boolean mkdir() :创建由此File表示的目录。
--public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
--代码示例:
// 创建删除功能
File f4 = new File("D:/代码/java/helloworld/file_data/file03.txt"); // 文件路径
File f5 = new File(("D:/代码/java/helloworld/file_data/file04")); // 目录路径
File f6 = new File(("D:/代码/java/helloworld/file_data/file05/file06")); // 目录路径
System.out.printf("文件是否存在:" + String.valueOf(f4.exists()) + "\n");
System.out.println("创建文件:"+f4.createNewFile()); //创建文件
System.out.printf("文件是否存在:" + String.valueOf(f4.exists()) + "\n");
f5.mkdir(); //创建单极文件夹
f6.mkdirs(); //创建多级文件夹
f5.delete(); // 多级删除时只会删除最小目录的文件夹,父目录不会动·
f6.delete();
f4.delete();
6、目录的遍历 和 for循环的特殊用法
--public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
--public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
// 文件夹路径遍历,通过String list对象
File f7 = new File("D:/代码/java/helloworld/file_data");
String[] names_f7 = f7.list();
for (String name : names_f7){
System.out.printf("当前路径是:" + name + "\n");
}
// 文件夹路径遍历,通过
File [] files_f7 = f7.listFiles();
for(File file_f7: files_f7){
System.out.printf("该文件的绝对路径:" + file_f7.getAbsolutePath() + "\n");
System.out.printf("是否为文件:" + String.valueOf(file_f7.isFile()) + "\n");
System.out.printf("是否为路径:" + String.valueOf(file_f7.isDirectory()) + "\n");
}
--for 循环遍历数组
int [] a = new int[] {1, 2, 3, 4, 5, 6};
fot (int i: a){
printf(String.valueOf(i));
}
7、递归
--其实没啥好说的就是自己调用自己
--递归其实效率不高,容易导致内存巨大的占用问题不建议使用
--某些场合使用递归比较方便能够减少代码量,但是记住递归一定要有终止条件且一定可以触发该条件
--在构造函数中不能出现递归
8、文件过滤器 java.io.FileFilter
--java.io.FileFilter 是一个接口,是File的过滤器。 该接口的对象可以传递给File类listFiles(FileFil
ter)作为参数, 接口中只有一个方法。
--
9、lambda优化
--FileFilter 是只有一个方法的接口,因此可以用lambda表达式简写。
--lambda格式:
()‐>{ }
--FileFilter的lambda实现
public static void printDir3(File dir) {
// lambda的改写
File[] files = dir.listFiles(f ‐>{
return f.getName().endsWith(".java") || f.isDirectory();
});
// 循环打印
for (File file : files) {
if (file.isFile()) {
System.out.println("文件名:" + file.getAbsolutePath());
} else {
printDir3(file);
}
}
}