• Java_File类


    File类以抽象的方式代表文件名和目录路径。该类主要用于文件和目录的创建、查找、删除等。先来看一下File的构造方法:

    // 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
     File f = new File("E:\Java");
     // 从父路径名字符串和子路径名字符串创建新的 File实例
     File f1 = new File("E:\","PersonalWork");
     File f1_1 = new File((String) null,"PersonalWork");
     // 从父抽象路径名和子路径名字符串创建新的 File实例。
     File f2 = new File(new File("."),"MyTest");
     File f2_1 = new File((File)null,"MyTest");
     // 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例
     File f3 = null;
     try {
         f3 = new File(new URI("file:///E:/WorkProjects/test.html"));
     } catch (URISyntaxException e) {
         e.printStackTrace();
     }
    
     // 实质上:当f1_1, f2_1的第一个参数都为 null, 与 f 的实现方式是一致,
     // 都是通过 WinNTFilesSystem中的 normalize 方法检查给定的路径名字符串是否正常。
    
     //  返回此抽象路径名的路径名字符串
     System.out.println(f); // E:Java
     System.out.println(f1); //E:PersonalWork
     System.out.println(f1_1); // PersonalWork
     System.out.println(f2); //.MyTest
     System.out.println(f2_1); // MyTest
     System.out.println(f3); //E:WorkProjects	est.html
    
     // File类的静态变量
     System.out.println("---"+File.separator); //      与系统有关的默认名称分隔符
     System.out.println("---"+File.pathSeparator);// ;  与系统相关的路径分隔符字符
    
    • 访问文件和目录

    1访问文件名相关的方法

     File file = new File("E:\WorkProjects\test.html");
     File file2 = new File("test.html");
    
     System.out.println(file.getName()); // test.html   返回文件名或路径名(如果是路径,返回最后一级子路径)
     System.out.println(file.getParent()); // E:WorkProjects  返回对应目录(最后一级子目录)的父目录名
     System.out.println(file.getParentFile()); // 返回父目录的抽象路径名
     System.out.println(file2.getPath()); // test.html  返回对应的路径(相对)
     System.out.println(file2.getAbsolutePath());// E:WorkProjects	est.html 返回对应的绝对路径
     System.out.println(file2.getAbsoluteFile());// 返回抽象的绝对路径
     System.out.println(file.renameTo(new File("E:\WorkProjects\test1.html")));// 重命名文件 成功返回true,否则false
     try {
         System.out.println(file.getCanonicalFile());// 返回此抽象路径名的规范形式。
         System.out.println(file.getCanonicalPath());// 返回此抽象路径名的规范路径名字符串。
     } catch (IOException e) {
         e.printStackTrace();
     }
    

    2.文件检测相关方法

     File file = new File("E:\WorkProjects\test1.html");
    
     System.out.println(file.exists());  //true  判断文件或者目录是否存在
     System.out.println(file.isFile());  //true  判断是否是文件
     System.out.println(file.isDirectory());  //false  判断是否是目录
     System.out.println(file.isHidden());  //false  判断是否是隐藏文件
     System.out.println(file.isAbsolute());  //true  判断是否是绝对路径
     System.out.println(file.canExecute());  //true  判断是否可执行
     System.out.println(file.canRead());  //true  判断是否可读
     System.out.println(file.canWrite());  //true  判断是否可写
    

    3文件操作相关方法

    File file = new File("E:\WorkProjects\test.txt");
    File file2 = new File("E:\zzz\www\");
    
    try {
        System.out.println(file.createNewFile()); // 创建文件,若文件不存在且创建成功,返回true。创建失败(或存在)返回false
        // 在 E:zzz 目录下创建一个文件名为 test0001...bb 的临时文件
        File temp =File.createTempFile("test0001","bb",new File("E:\zzz"));
        if(temp.exists()) { System.out.println("create temp success");}
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(file.delete()); //删除文件或目录,若删除文件成功返回true否则 false;只能删除空目录,成功true否则 false
    // 注册一个删除的钩子,指定当java虚拟机退出时,删除对应的文件或目录
    // 若对应的目录为空目录则删除该空目录,否则不删除该目录
    // 若对应的为文件则删除文件。
    file2.deleteOnExit();
    System.out.println("----");
    

    4目录操作相关方法

    File file = new File("E:\WorkProjects\");
    File file2 = new File("E:\zzz\www\aa\bb");
    
    System.out.println(file2.mkdir()); // 创建目录,成功返回true否则false; 若父目录不存在则创建失败
    System.out.println(file2.mkdirs()); // 递归创建,不需要考虑父目录是否存在。若路径存在则创建失败 false
    
    String [] list = file.list(); // 列出该目录下的所有文件名及子目录名
    System.out.println(Arrays.toString(list));  //例如: test.txt
    File[] files = file.listFiles(); // 列出该目录下的所有文件路径名及子目录路径名
    System.out.println(Arrays.toString(files)); //例如: E:WorkProjects	est.txt
    File[] root = File.listRoots(); // 列出系统所有根路径
    System.out.println(Arrays.toString(root));  //例如: window上 [C:\, D:\, E:\, F:]
    

    5文件相关信息

    File file = new File("E:\WorkProjects\test1.html");
    
    System.out.println(new Date(file.lastModified())); //Sun Aug 01 17:10:10 CST 2018  返回文件最后修改的时间
    System.out.println(file.length()); //1661  返回文件内容的长度
    

    6.设置文件相关属性

    File file = new File("E:\WorkProjects");
    
    System.out.println(file.setExecutable(true)); // 设置文件或目录可执行
    System.out.println(file.setReadable(true)); // 设置文件或目录可读
    System.out.println(file.setWritable(true)); // 设置文件或目录可写
    System.out.println(file.setReadOnly()); // 设置文件或目录只允许读取操作
    System.out.println(file.setLastModified(System.currentTimeMillis())); // 设置文件或目录最后修改时间
    
    • 文件过滤器 File类中的list()方法中可接受一个FileNameFilter参数,通过该参数可以只列出符合条件的文件。listFiles()方法中可以接受FileNameFilter或者FileFilter参数。
     File file = new File("E:\WorkProjects");
     File file1 = new File(".");
    
     // 列出该目录下不包含隐藏文件或目录的所有文件及子目录
     // java 1.8 Lambda表达式写法
     //File[] files = file.listFiles(pathname -> !pathname.isHidden());
     File[] files = file.listFiles(pathname -> {
         if(!pathname.isHidden()) {
             return true;
         }
         System.out.println(pathname+"  it's a hidden file or folder");
         return false;
     });
     /*File[] files = file.listFiles(new FileFilter() { //java.io.FileFilter 过滤器
         @Override
         public boolean accept(File pathname) {
             if(!pathname.isHidden()) {
                 //System.out.println( "accept--"+ "It isn't a hidden file or folder");
                 return true;
             }
             System.out.println(pathname+"  it's a hidden file");
             return false;
         }
     });*/
     System.out.println(Arrays.toString(files));
    
     --------------------------------分割线---------------------------------
     //列出该目录下文件名以 .java结尾,或者文件对应一个路径
     //String [] nameList = file1.list((dir, name) -> (name.endsWith(".java")|| new File(name).isDirectory());
      String [] nameList = file1.list((dir, name) -> {
         if(name.endsWith(".java")|| new File(name).isDirectory()){
             return true;
         }
         System.out.println("dir:"+dir+ "  , name"+name );
         return false;
     });
     /* String [] nameList = file1.list(new FilenameFilter() {
         @Override
         public boolean accept(File dir, String name) {
             if(name.endsWith(".java")|| new File(name).isDirectory()){
                 return true;
             }
             System.out.println("dir:"+dir+ "  , name"+name );
             return false;
         }
     });*/
     System.out.println(Arrays.toString(nameList));
    
  • 相关阅读:
    一次线上问题引发的对于C#中相等判断的思考
    Node中的模块引入机制
    Node 各个版本支持ES2015特性的网站
    使用Chrome 中的 ssh 插件登陆 linux 服务器
    vmWare 虚机文件不能启动的事故处理
    JaveScript 中使用 XSLT转换XML文档
    浏览器上的坐标体系相关概念(客户区,页面,屏幕)
    visual Studio 中使用正则表达式来进行查找替换
    JavaScript 执行环境及作用域
    Laravel save部分字段失效的bug问题解决
  • 原文地址:https://www.cnblogs.com/zeo-to-one/p/9426858.html
Copyright © 2020-2023  润新知