• java核心学习(十一) IO框架---File类


    一、File类

     File类位于java.io包下,代表与平台无关的文件和目录,可以新建、删除、重命名文件和目录,也可以访问文件的某些属性,但是不可以完成文件读写

     下面编写一段例子代码来体会File类的用法。

     

    package IOTest;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileTest {
        public static void main(String[] args) throws IOException{
            //以当前路径来创建一个File对象
            File file = new File(".");
            //直接获取文件名
            System.out.println(file.getName());
            //获取相对路径的父路径
            System.out.println(file.getParent());
            //获取绝对路径
            System.out.println(file.getAbsolutePath());
            //获取上一级路径
            System.out.println(file.getAbsoluteFile().getParent());
            //在当前路径下创建一个临时文件
            File temFile = File.createTempFile("FileTest",".txt",file);
            //指定当JVM退出时删除该文件
            temFile.deleteOnExit();
            //以系统当前时间作为新文件名来创建新文件
            File newFile = new File(System.currentTimeMillis()+"");
            //以指定的newFile对象来创建一个文件
            System.out.println("newFile对象是否存在:"+(newFile.exists()?"存在":"不存在"));
            newFile.createNewFile();
            System.out.println("newFile对象是否存在:"+(newFile.exists()?"存在":"不存在"));
            //以newFile对象来创建一个目录,因为newFile已存在,所以下面方法返回false
            System.out.println(newFile.mkdir());
            //使用list()方法列出当前路径下的所有文件和路径
            String[] fileList = file.list();
            for (String s:fileList
                 ) {
                System.out.println(s);
            }
            //listRoots()静态方法列出所有的磁盘根路径
            File[] roots = File.listRoots();
            for (File root: roots
                 ) {
                System.out.println(root);
            }
        }
    }
    .
    null
    E:app	alkroom2WhhTalkRoom_server.
    E:app	alkroom2WhhTalkRoom_server
    newFile对象是否存在:不存在
    newFile对象是否存在:存在
    false
    .idea
    1505285884856
    FileTest8400817717936644656.txt
    pom.xml
    src
    target
    WhhTalkRoom_server.iml
    C:
    D:
    E:
    F:
    
    Process finished with exit code 0

      可以看到File类对于访问文件系统已经提供了很多的方法了,但是相比于我们直接在linux系统里使用命令操作文件系统还是有很大的差距,不过若真的使用命来代替文件访问,可以使用Runtime类的exec方法,具体用到的时候可以查看文档和工具书。不过现在一般会使用NIO.2 的Files和Path和Paths类来全面的访问文件和文件系统

    二、文件过滤器

      FilenameFilter接口是一个函数式接口,File类的list()方法可以接受一个实现FilenameFilter接口的类的实例来作为参数

    package IOTest;
    
    import java.io.File;
    import java.io.FilenameFilter;
    
    public class FilenameFilterTest {
        public static void main(String[] args){
            File file = new File(".");
            String[] nameList = file.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    //文件已java为后缀,或者是一个目录则返回true,它的用法只需要传入根据name和dir的过滤条件。(命令模式的典型例子)
                    return name.endsWith(".java") || new File(name).isDirectory();
                }
            });
            for (String name :nameList
                 ) {
                System.out.println(name);
            }
        }
    }

      输出

    .idea
    src
    target
    
    Process finished with exit code 0

     

  • 相关阅读:
    pdf.js使用
    当前时间距离下一个分钟值以0或者5结尾的时间点(单位:毫秒)小于1分钟时,返回下下个以0或5结尾的时间点
    1
    Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot get a connection, pool error Pool exhausted 异常原因排查
    gcp导出mysql慢日志写入数据库分析
    redis慢日志结构化
    谷歌云监控告警
    google-cloud的sql-rds导出my.cnf
    慢sql 实时钉钉告警
    docker跨网段搭建gp测试环境
  • 原文地址:https://www.cnblogs.com/Theshy/p/7515207.html
Copyright © 2020-2023  润新知