java IO操作File类
---恢复内容开始---
IO操作
把内存上的数据写到可持久化存储的设备上叫输出(Output)
把持久存储数据的设备写到内存上叫输入(Input)
File类
把文件和文件夹都封装成文件对象
File类获取对象
1 import java.io.File; 2 3 public class Demo02 { 4 5 public static void main(String[] args) { 6 File f = new File("E:\\java学习\\6月5号"); 7 System.out.println(f.getAbsolutePath()); 8 9 }
返回了
E:\\java学习\\6月5号
import java.io.File; public class Demo02 { public static void main(String[] args) { File f = new File("E:\\java学习\\6月5号"); System.out.println(f.getName()); }
返回了6月5号
1 import java.io.File; 2 3 public class Demo02 { 4 5 public static void main(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) throws IOException { File f = new File("E:\\java学习\\6月15号\\b"); f.createNewFile(); }
会创建一个空文本
看一下这个文件或者目录在不在,返回boolean
1 public static void main(String[] args) throws IOException { 2 File f = new File("E:\\java学习\\6月15号\\b"); 3 System.out.println(f.exists()); 4 5 }
1 public class Demo02 { 2 3 public static void main(String[] args) throws IOException { 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) throws IOException { 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) throws IOException { 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
文件过滤器
获得一个目录下的所有文件再进行筛选
package com.orcale.demo01; import java.io.File; import java.io.FileFilter; public class MFile implements FileFilter{ 过滤器方法 public boolean accept(File pathname) { // TODO 自动生成的方法存根 String str = pathname.getName(); boolean flag = str.endsWith(".png"); 把获取到的文件对象结尾是.png的放到数组中去
return flag; } }
1 public static void method02(File f){ 2 File[] f1 = f.listFiles(new MFile()); 3 for(File f2:f1){ 4 System.out.println(f2); 5 } 6 } 8 }
递归
自己调用自己,分为2种,直接递归和间接递归
直接递归就是自己调用自己的方法
间接递归是,A调用B,B调用C
计算1-n之间的乘积,使用递归完成
public static int method3(int n){ if(n==1){ return 1; } return n*method3(n-1); } }
输出结果:System.out.println(method3(5));
注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
1 public static void method04(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 }