File类 递归
一、file类
概念:主要指Java中的文件或者文件夹类
注意事项:
1· 创建文件夹,不能有后缀,有后缀的是文件
2.file对象都是指代最后一级的那个文件或者文件夹
/* String[] list()
返回的字符串在该目录下的抽象路径名的文件和目录命名为数组*/
File file = new File("F:/test");
String[] list = file.list();
System.out.println(Arrays.toString(list));//[r.java, t.doc, t.txt, test.txt, test2, tu.jpg]
/*File[] listFiles()
返回表示抽象路径名的目录中的文件的路径名表示抽象的数组。 */
File file = new File("F:/test");
File[] listFiles = file.listFiles();
System.out.println(Arrays.toString(listFiles));//[F:\test\t.doc, F:\test\t.txt, F:\test\test.txt, F:\test\test2, F:\test\tu.jpg]
/*String[] list(FilenameFilter filter)
返回的字符串在该目录下的抽象路径名,满足指定的过滤器表示文件和目录命名数组*/
File file = new File("F:/test");
String[] list2 = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".txt")){
return true;
}
return false;
}
});
System.out.println(Arrays.toString(list2));//[t.txt, test.txt]
/*File[] listFiles(FilenameFilter filter)
返回表示的抽象路径名的文件和目录的目录,这个抽象路径名满足指定过滤器表示数组*/
File file = new File("F:/test");
File[] listFiles2 = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".txt")){
return true;
}
return false;
}
});
System.out.println(Arrays.toString(listFiles2));//[F:\test\t.txt, F:\test\test.txt]
/*File[] listFiles(FileFilter filter)
返回表示的抽象路径名的文件和目录的目录,这个抽象路径名满足指定过滤器表示数组 */
File file = new File("F:/test");
File[] listFiles3 = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".txt")) {
return true;
}
return false;
}
});
System.out.println(Arrays.toString(listFiles3));//[F:\test\t.txt, F:\test\test.txt]
二、递归
在方法内部调用自己,就是递归
底层就是方法的多次调用,不满足结束条件的时候入栈,满足结束条件出栈
能用for循环就不要用递归,因为递归非常占用栈资源
技巧
1.先用数值带入法,写出前面几个值,观察其规律
2.将所有的已知条件写出来,未知条件用规律表示在内部调用自己