java--IO流之File类
IO概述
回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、光盘、U盘等)上。
当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。
当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。
因此我们把这种输入和输出动作称为IO操作。
一、File类的出现
阅读其描述:File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
二、 File类的构造函数
1 //File 类包含 2 //1.路径 path 3 //2.目录 directory ---文件夹 4 //3.文件 file 5 public static void method2(){ 6 //File类构造方法不会给你检验这个文件夹或文件是否真实存在 7 1. File file=new File("e:\\test\\test\\a.txt"); 8 2. File file=new File("e:","test"); 9 File f1=new File("d:\\test"); 10 3. File file=new File(f1,"a.txt"); 11 System.out.println(file); 12 }
成员变量
public static void method1(){ System.out.println(File.pathSeparator); //与系统有关的路径分隔符---win ; linux : System.out.println(File.separator); //与系统有关的名称分隔符---win \ linux / }
三、File类的获取
1 public static void method3(){ 2 //File file=new File("d:\\test\\a.txt"); 3 File file=new File("abc"); 4 //相对路径走的是本工程路径 5 System.err.println(file.getAbsolutePath());//返回此抽象路径名的绝对路径名字符串。 6 } 7 public static void method4(){ 8 //获取本路径目录名或者文件名 9 File file=new File("e:\\test\\test\\a.txt"); 10 System.out.println(file.getName()); 11 //getPath()和toString()一个作用 12 System.out.println(file.getPath()); 13 //返回文件的长度lang--字节数 *针对文件使用 14 System.out.println(file.length()); 15 }
四、文件和文件夹的创建删除等
1 public static void method5() throws IOException{ 2 //创建文件(只能创造文件不能创造文件夹)--返回true或false 3 File file=new File("e:\\test\\b.txt"); 4 boolean flag=file.createNewFile(); 5 System.out.println(flag); 6 } 7 public static void method6(){ 8 //创建文件夹--返回true或false 9 File file=new File("e:\\test\\b"); 10 boolean flag=file.mkdirs(); 11 System.out.println(flag); 12 } 13 public static void method7(){ 14 //删除文件或文件夹---直接从硬盘上删除不走回收站,删除需谨慎 15 File file=new File("e:\\test\\b.txt"); 16 boolean flag=file.delete(); 17 System.out.println(flag); 18 } 19 public static void method8(){ 20 //判断测试 21 File file=new File("e:\\test\\b"); 22 //判断file对象表示的文件或文件夹是否真实存在 23 boolean flag=file.exists(); 24 System.out.println(flag); 25 //判断是否是文件夹 26 boolean flag1=file.isDirectory(); 27 System.out.println(flag1); 28 //判断是否是文件 29 boolean flag2=file.isFile(); 30 System.out.println(flag2); 31 }
五、listFiles()方法介绍
public static void method9(){ //获取此路径下的所有的文件及文件夹--返回字符串名称 File file=new File("e:\\test"); String[] files=file.list(); for(String s:files){ System.out.println(s); } } public static void method10(){ //获取此路径下的所有的文件及文件夹--返回文件或文件夹路径 File file=new File("e:\\test"); File[] files=file.listFiles(); for(File f:files){ System.out.println(f); } }
注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
六、文件过滤器
自定类继承FileFilter接口
1 public class MYFilter implements FileFilter{ 2 //listFiles方法默认调用accept方法--返回true才能添加进File数组 3 @Override 4 public boolean accept(File pathname) { 5 String name=pathname.getName().toLowerCase();//获取路径字符串并变成小写 6 boolean flag=name.endsWith(".java"); 7 return flag; 8 } 9 }
测试类
1 public class Demo02 { 2 public static void main(String[] args) { 3 File file=new File("e:\\test"); 4 File[] files=file.listFiles(new MYFilter());---有参构造有过滤器,无参是没有过滤器 5 for(File f:files){ 6 System.out.println(f); 7 } 8 } 9 }
内存图解: