zoukankan      html  css  js  c++  java
  • 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相关技巧、读书笔记

  • 相关阅读:
    Poj 2017 Speed Limit(水题)
    Poj 1316 Self Numbers(水题)
    Poj 1017 Packets(贪心策略)
    Poj 1017 Packets(贪心策略)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2000 Gold Coins(水题)
    poj 2000 Gold Coins(水题)
  • 原文地址:https://www.cnblogs.com/manongxiao/p/14050810.html
Copyright © 2011-2022 走看看