• java IO流之File类的使用


    java高级之IO流

    File类的使用

    File类概述

    • 对于经常使用计算机的人,对计算机系统里面的目录和文件一定不陌生,在计算机系统上我们可以手动新增、修改、删除、查看文件夹及文件夹里的文件,也可以通过Java标准库中的java.io.File对象来操作文件和目录。

    • File类是文件和文件目录路径的抽象表示形式,它与平台无关,File类的一个对象,代表一个文件目录或一个文件。

    • File对象代表一个文件目录或一个文件,若磁盘中存在该对象表示的文件时,各个属性会显式赋值;如果磁盘中不存在该文件,创建的对象的属性取成员变量的默认值。

    • File 能对文件和目录进行相关操作,比如新建、删除、重命名,修改时间、文件大小等。也就是说,File类的操作层面在文件,它不能访问具体的文件内容,如果需要访问具体的文件内容,需要使用到输入/输出流。

    • Java程序中的一个File对象可能没有一个真实存在的文件或目录,但要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象。

    • File对象可以作为参数传递给流的构造器。

    路径分隔符

    • 路径中的每级目录之间用一个路径分隔符隔开。不同的系统使用的路径分隔符也不同:windows和DOS系统默认使用来表示,在Java字符串中需要用\表示一个、UNIX和URL使用/来表示。

    • Java程序支持跨平台运行,因此路径分隔符要谨慎使用。为了解决不同系统间路径分割符的隐患,File类提供了一个常量。

      //该常量可以根据操作系统,动态的提供分隔符
      public static final String separator = "" + separatorChar;
      

    File类常用方法

    构造方法

    方法的格式 方法的描述
    File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
    File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
    File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
    /**
     * File类的构造方法
     *      1、传入绝对路径 或者 传入相对路径
     *          File(String filePath) 
     *      2、传入父路径和子路径 String类型数据
     *          File(String parentPath,String childPath)
     *      3、File类型 和 String类型的参数
     *          File(File parentFile,String childPath)
     */
    @Test
    public void test1(){
        //1.1、相对于当前module 相对路径
        File file1 = new File("hello.txt");
        //1.2、绝对路径
        File file2 =  new File("/Users/mac/Documents/common/每日必看/hello.txt");
        //2.1、两个String类型的参数
        File file3 = new File("/Users/mac/Documents/common/每日必看","Java");
        System.out.println(file3);
        //3.1、一个File类型参数一个String类型参数
        File file4 = new File(file3,"hi.txt");
    }
    

    获取方法

    方法的格式 方法的描述
    String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
    String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。
    String getPath() 将此抽象路径名转换为路径名字符串。
    String getName() 返回由此抽象路径名表示的文件或目录的名称
    String getParent() 获取上层文件目录路径。若无,返回null
    long length() 获取文件长度(即:字节数)。不能获取目录的长度
    long lastModified() 获取最后一次的修改时间,毫秒值
    String[] list() 获取指定目录下的所有文件或者文件目录的名称数组
    File[] listFiles() 获取指定目录下的所有文件或者文件目录的File数组
    File filemethod1 = new File("hello.txt");
    File filemethod2 = new File("/Users/mac/Documents/common/每日必看/io/hello.txt");
    //绝对路径
    System.out.println(filemethod1.getAbsoluteFile());
    //规范路径
    System.out.println(filemethod1.getCanonicalPath());
    //路径
    System.out.println(filemethod1.getPath());
    //名称
    System.out.println(filemethod1.getName());
    //上层文件目录路径
    System.out.println(filemethod1.getParent());
    //文件长度
    System.out.println(filemethod1.length());
    //最后一次的修改时间
    System.out.println(new Date(filemethod1.lastModified()));
    
    //指定目录下的所有文件或者文件目录的名称数组   重点在名称
    File file = new File("/Users/mac/Documents/common/每日必看");
    String[] list = file.list();
    for(String s : list){
        System.out.println(s);
    }
    System.out.println();
    //指定目录下的所有文件或者文件目录的File数组  重点是所有的File目录
    File[] files = file.listFiles();
    for(File f : files){
        System.out.println(f);
    }
    
    • 注意绝对路径和规范路径的区别:可以用.表示当前目录,..表示上级目录。现在有两个目录:/Users/mac/Documents/common/每日必看1/Users/mac/Documents/common/每日必看2。则每日必看1的路径表示
      • 绝对路径:/Users/mac/Documents/common/每日必看1 等价于/Users/mac/Documents/common/每日必看2/../每日必看1
      • 规范路径:/Users/mac/Documents/common/每日必看1

    重命名与判断方法

    方法的格式 方法的描述
    boolean renameTo(File dest) 重命名由此抽象路径名表示的文件
    boolean isDirectory() 测试此抽象路径名表示的文件是否为目录。
    boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
    boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
    boolean canRead() 测试应用程序是否可以读取由此抽象路径名表示的文件。
    boolean canWrite() 测试应用程序是否可以修改由此抽象路径名表示的文件。
    boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。
    boolean isHidden() 测试此抽象路径名命名的文件是否为隐藏文件
     //目的地:file2 不能存在    file1存在才能返回true
     File file1 =  new File("/Users/mac/Documents/common/每日必看/io/hello.txt");
     File file2 =  new File("/Users/mac/Documents/common/每日必看/io/hello2.txt");
     boolean flag = file1.renameTo(file2);
     //是否为目录
     System.out.println(file2.isDirectory());
     //是否为普通文件
     System.out.println(file2.isFile());
     //是否存在
     System.out.println(file2.exists());
     //是否可以读取
     System.out.println(file2.canRead());
     //是否可以修改
     System.out.println(file2.canWrite());
     //是否可以执行
     System.out.println(file2.canExecute());
     //是否为隐藏文件
     System.out.println(file2.isHidden());
    

    创建和删除方法

    方法的格式 方法的描述
    boolean createNewFile() 创建文件。若文件存在,则不创建,返回false
    boolean mkdir() 创建文件目录。如果此文件目录存在,不创建。如果此文件目录的上层目录不存在,不创建。
    boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
    boolean delete() 删除由此抽象路径名表示的文件或目录。
    File file1 =  new File("/Users/mac/Documents/common/每日必看/io/hello.txt");
    if(!file1.exists()){
      	//创建文件
        file1.createNewFile();
        System.out.println("创建!");
    } else {
      	//删除文件
        file1.delete();
        System.out.println("删除!");
    }
    //创建文件目录 若此目录的上层目录不存在 不创建,若该目录存在,也不创建
    File file2 =  new File("/Users/mac/Documents/common/每日必看/io/file1/file2");
    boolean mkdir = file2.mkdir();
    System.out.println("mkdir = "+mkdir);
    //创建目录,就算该目录的父目录不存在也会创建成功
    File file3 = new File("/Users/mac/Documents/common/每日必看/io/file1/file3");
    Boolean mkdir1 = file3.mkdirs();
    System.out.println("mkdir1=" + mkdir1);
    

    总结

    • 主要讲java.io.File类的基本理解以及常见的问题,对File中的常用方法进行了简单练习。

    欢迎关注

    • 公众号简介:分享各种编程知识、excel相关技巧、读书笔记

  • 相关阅读:
    创新推出 | Serverless 调试大杀器:端云联调
    云原生年度技术盘点出炉!乘风破浪正当时
    SchedulerX 如何帮助用户解决分布式任务调度难题?
    平安保险基于 SPI 机制的 RocketMQ 定制化应用
    Spring Boot Serverless 实战系列 | 性能调优
    独家交付秘籍之招式拆解(第一回)
    MaxCompute湖仓一体介绍
    三大特性,多个场景,Serverless 应用引擎 SAE 全面升级
    代码覆盖率在性能优化上的一种可行应用
    java程序员怎么创建自己的网站:第一章:总体流程
  • 原文地址:https://www.cnblogs.com/manongxiao/p/14050810.html
Copyright © 2020-2023  润新知