复习JavaSE 11.File 递归
2019-03-10 本文已影响0人
第二套广播体操
File构造方法
- File(File parent, String child)
- 从父抽象路径名和子路径名字符串创建新的 File实例。
- File(String pathname)
- 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
- File(String parent, String child)
绝对路径 路径的全称
相对路径 省略根文件(项目文件)以前的路径
File file = new File("D:\\IO\\IO1.txt");
if (!file.exists())file.mkdir();
会产生一个名字叫IO1.txt的文件夹
public class FileMethod {
public static void main(String[] args) throws IOException {
// fileDemo1();
fileDemo2();
}
private static void fileDemo2() throws IOException {
File file = new File("D:\\IO\\IO1.txt");
if (!file.exists())file.mkdir();
File file1 = new File(file,"DEMO2.txt");
if (!file1.exists())file1.createNewFile();
}
private static void fileDemo1() {
File file = new File("D:\\IO\\DEMO1.txt");
System.out.println(file.getAbsolutePath());
File file1=new File("D:\\IO");
File file2 = new File(file1,"DEMO1.txt");
}
}
递归消耗资源
*迭代一定要有条件限定,保证递归可以停止下来 否则会发生栈内存溢出
*递归虽然有限定 但是递归次数不能太多 否则也会造成栈内存过多
*构造方法不能使用递归
计算1到n的和 不推荐使用递归 应该使用for循环
public class DiguiDemo1 {
public static void main(String[] args) {
int i=1;
int n=4;
int add = add(i, n);
System.out.println(add);
}
private static int add(int i,int n) {
if (i<n) {
i+=add(++i,n);
}
return i;
}
}
阶乘
public class DiguiDemo2 {
public static void main(String[] args) {
int n = 5;
int i = jieCheng(n);
System.out.println(i);
}
private static int jieCheng(int n) {
if (n==1)
return 1;
return n*jieCheng(n-1);
}
}
遍历文件夹
public class FileName {
public static void main(String[] args) {
File file = new File("D:\\QQBrowser");
FileNameDemo1(file);
}
private static void FileNameDemo1(File file) {
// 打印目录
System.out.println(file);
// 遍历目录下的文件
File[] files=file.listFiles();
for (File file1 : files) {
// 如果是文件夹 则遍历这个文件夹
if (file1.isDirectory())
FileNameDemo1(file1);
// 如果是文件 则打印他
else System.out.println(file1);
}
}
}
ListFiles中的文件过滤器 FileFilter FileNameFilter 均为接口
listFiles将File对象一个个得传递到过滤器中进行过滤
符合要求的true得以保存到File[]中
public class FileFilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
//如果是子文件夹 也得以保存 否则递归时没有子文件夹 查询不了里面的文件
if (pathname.isDirectory()) return true;
return pathname.getName().toLowerCase().endsWith(".java");
}
}
public class FileFilterDemo {
public static void main(String[] args) {
File file = new File("D:\\IO");
FileNameDemo1(file);
}
private static void FileNameDemo1(File file) {
// File[] files=file.listFiles(new FileFilterImpl());
/* File[] files=file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java");
}
});*/
/*File[] files=file.listFiles((pathname -> pathname.isDirectory()||
pathname.getName().toLowerCase().endsWith(".java")));*/
File[] files = file.listFiles(((dir, name) ->
new File(dir, name).isDirectory() || name.toLowerCase().endsWith(".java")));
for (File file1 : files) {
if (file1.isDirectory())
FileNameDemo1(file1);
else System.out.println(file1);
}
}
}