---恢复内容开始---
IO操作
把内存上的数据写到可持久化存储的设备上叫输出(Output)
把持久存储数据的设备写到内存上叫输入(Input)
File类
把文件和文件夹都封装成文件对象
File类获取对象
1 importjava.io.File;2
3 public classDemo02 {4
5 public static voidmain(String[] args) {6 File f = new File("E:\\java学习\\6月5号");7 System.out.println(f.getAbsolutePath());8
9 }
返回了
E:\\java学习\\6月5号
importjava.io.File;public classDemo02 {public static voidmain(String[] args) {
File f= new File("E:\\java学习\\6月5号");
System.out.println(f.getName());
}
返回了6月5号
1 importjava.io.File;2
3 public classDemo02 {4
5 public static voidmain(String[] args) {6 File f = new File("E:\\java学习\\6月15号");7 System.out.println(f.length());8
9 }
获取了文件的大小 4096
对文件和文件夹的操作
public static void main(String[] args) throwsIOException {
File f= new File("E:\\java学习\\6月15号\\b");
f.createNewFile();
}
会创建一个空文本
看一下这个文件或者目录在不在,返回boolean
1 public static void main(String[] args) throwsIOException {2 File f = new File("E:\\java学习\\6月15号\\b");3 System.out.println(f.exists());4
5 }
1 public classDemo02 {2
3 public static void main(String[] args) throwsIOException {4 File f = new File("E:\\java学习\\6月15号\\b\\a");5 f.mkdirs();6
7 }
创建多级目录文件夹,用mkdirs
listFiles()方法
1 public static void main(String[] args) throwsIOException {2 File f = new File("E:\\java学习\\6月15号");3 String[] str =f.list();4 for(String s:str){5 System.out.println(s);6 }7
8 }
显示此目录中文件和文件夹
1 public static void main(String[] args) throwsIOException {2 File f = new File("E:\\java学习\\6月15号");3 File[] str =f.listFiles();4 for(File s:str){5 System.out.println(s);6 }7
8 }显示路径和文件,文件夹
注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
文件过滤器
获得一个目录下的所有文件再进行筛选
packagecom.orcale.demo01;importjava.io.File;importjava.io.FileFilter;public class MFile implementsFileFilter{
过滤器方法public booleanaccept(File pathname) {//TODO 自动生成的方法存根
String str =pathname.getName();boolean flag = str.endsWith(".png"); 把获取到的文件对象结尾是.png的放到数组中去returnflag;
}
}
1 public static voidmethod02(File f){2 File[] f1 = f.listFiles(newMFile());3 for(File f2:f1){4 System.out.println(f2);5 }6 }
8 }
递归
自己调用自己,分为2种,直接递归和间接递归
直接递归就是自己调用自己的方法
间接递归是,A调用B,B调用C
计算1-n之间的乘积,使用递归完成
public static int method3(intn){if(n==1){return 1;
}return n*method3(n-1);
}
}
输出结果:System.out.println(method3(5));
注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
1 public static voidmethod04(File f){2 File[] f1 =f.listFiles();3 for(File f2:f1){4 if(f2.getName().endsWith("docx")){ 先判定结尾,让递归一次调用5 System.out.println(f2);6 }7 if(f2.isDirectory()){8 method04(f2);9 }10 }11 }