Java 21 IO技术File(包含过滤器)

用于处理设备上数据的技术 设备:内存 硬盘 光盘
流 系统资源 windows系统本身就可以操作设备 各种语言就只是使用了系统平台上的这个资源
并对外提供各种语言自己的操作功能 这些功能调用的就是系统资源
使用资源 要释放
io:java中所涉及的功能在java.io包中


File:Io技术用于操作设备上数据的 而数据最常见的体现形式就是文件
先了解文件的操作:
创建 删除 存在 隐藏 获取

public class File_Test1 {
    public static void main(String[] args) {
        File file=new File("D\\","1.txt");
        File file1=new File("C"+File.separator,"1.txt");
//        File.separator 系统分割符
    }
}

File 常见方法
* 1.名字 获取名字
* String getName();
* 2. 大小 获取大小
* long length();
* 3. 类型 获取类型 没有 可以自定义
* 4.路径
* String getParent();

public class File_Test2 {
    public static void main(String[] args) {

        File file=new File("C:\\abv\\1.txt");
        String name=file.getName();
        System.out.println(name);
        long size=file.length();
        System.out.println(size);
        String way=file.getParent();
        System.out.println(way);

    }
}

File方法:
1.获取绝对路径
String getAbsolutePath()
2.获取路径
String getPath()
3.获取文件最后一次修改时间 要求x年x月x日 时间
long lastModified()
4.文件是否是隐藏的
boolean isHidden()
5.发现file文件对象封装的文件或文件夹时可以存在的也可以是不存在
那么怎么用file功能创建呢?
创建功能:
boolean createNewFile()
boolean mkdir() 创建文件夹
bolean mkdirs() 创建多级文件夹
删除功能:
boolean delete() 不走回收站
存在:
6.一个file对象封装的文件或者文件夹到底时候存在呢
Boolean exists()
7.getFreeSpace(); 未使用空间 getUsableSpace()已使用

public class File_Test3 {
    public static void main(String[] args) throws IOException {
        File file=new File("abc//");
//        methodDemo1(file);
        methodDemo2(file);
    }

    private static void methodDemo2(File file) throws IOException {
/*//        创建
        boolean b=file.createNewFile();//如果文件存在则不创建
        System.out.println(b);
//       存在
        Boolean exist= file.exists();
        System.out.println(exist);*/
//        创建文件夹 创建多级文件夹
        Boolean mkdir=file.mkdir();
//        directory目录
        Boolean mkdirs=file.mkdirs();
//        删除文件夹 应该先删除里面的内容 再删除文件夹
        System.out.println(mkdir);
    }

    private static void methodDemo1(File file) {
        String path=file.getAbsolutePath();//获取文件对象的绝对路径 即使封装是相对的 获取的也是绝对的
        String path1=file.getPath();//获取封装路径 封装什么拿什么
        System.out.println(path);
        System.out.println(path1);


        long time=file.lastModified();
        System.out.println(time);
//        毫秒值 需要转换
        Date date=new Date(time);
//        DateFormat dateFormat=DateFormat.getDateInstance();
//        String timeString=dateFormat.format(date);
        String timeString= DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM).format(date);
        System.out.println(timeString);

        boolean b=file.isHidden();
        System.out.println(b);
    }
}

获取文件夹中的所有文件和文件夹名称

public class File_Test4 {
    public static void main(String[] args) {
//        获取文件夹中的所有文件和文件夹名称
        File dir=new File("C:\\");
        File[] files=dir.listFiles();//可以对文件进行操作
        for (File f:files)
            System.out.println(f);
      /*  String[] names=dir.list();//列出当前目录下的所有文件和文件夹名称包含隐藏文件
//        只能获取名称
         if(names!=null)
        for (String name:names)
            System.out.println(name);*/
    }
}

搜索D盘下所有.txt文件(不包括子文件夹)

public class File_Test5 {
    public static void main(String[] args) {
//        提供路径
        File dir=new File("D:\\");
//        过滤器
        File[] names=dir.listFiles(new FilerByContain(".txt"));
        for (File name:names)
            System.out.println(name);
    }
}
过滤器

过滤器方法


过滤器方法

过滤器

public class FilerByContain implements FileFilter {
    private String type;

    public FilerByContain(String string) {
        this.type = string;
    }
//    构造函数 传入类型

    @Override
    public boolean accept(File pathname) {
        return pathname.getName().contains(type);
//        获取文件名 是否包含type
    }
}

遍历指定目录下的内容 包含子目录下的内容 (递归)
递归:函数自身调用自身 函数内部又使用到了该函数功能
什么时候用
功能被重复使用 但是每一次该功能使用参与的运算的数据不同时 可以
使用时 一定要定义条件

public class File_Test7 {
    public static void main(String[] args) {
    
        File file=new File("D:\\QQ");
        getFile(file);

    }

    private static void getFile(File file) {
        File[] files=file.listFiles();
        System.out.println(file);//输出目录名
        for (File f :
                files) {
            if (f.isDirectory())//如果f是目录则递归
                getFile(f);
            else {
                System.out.println(f);
            }

        }
    }
}

递归 删除目录

public class File_Test8 {
    public static void main(String[] args) {
        File file=new File("D:\\PanData");
        deleteData(file);
    }

    private static void deleteData(File file) {
        File[] files=file.listFiles();
        for (File f :
                files) {
              if (f.isDirectory())
                  deleteData(f);
              else {
                  System.out.println(f+"   "+f.delete());
              }

        }
        file.delete();
    }
}

你可能感兴趣的:(Java 21 IO技术File(包含过滤器))