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 }

 内存图解:

 

posted @ 2018-08-20 16:40  大树*  阅读(246)  评论(0编辑  收藏  举报