美文网首页
Java File类

Java File类

作者: 王世军Steven | 来源:发表于2017-01-10 11:25 被阅读182次

一 File 类

File 是文件或者目录的抽象表示形式 .也就是说它既可以表示一个标准文件(比如 : *.txt等)也可以表示一个目录(一组文件的集合).

说明 : 由于本文只是学习File类的相关API,因此直接使用代码来测试API,代码中有相应注释. 因此在代码之外不会有过多的文字描述.

1.1 File 类的静态成员.

注意 : 名称 != 路径

// 与系统有关的默认 名称 分割符.
System.out.println("名称分割符 : " + File.separator);
System.out.println("名称分割符 : " + File.separatorChar);
// 与系统有关的 路径 分隔符
System.out.println("路径分割符 : " + File.pathSeparator);
System.out.println("路径分割符 : " + File.pathSeparatorChar);
// 输出
// 名称分割符 : \
// 名称分割符 : \
// 路径分割符 : ;
// 路径分割符 : ;

1.2 创建 File 和 文件.

/**
 * 创建和修改.
 */
public static void testFile_04() {
    // 创建 File ,如果文件路径不存在则同样可以创建一个File实例.
    // 因此不要使用 file==null 判断文件是否存在.应该使用  file.exists();
    File file1 = new File("D:/TestForlder/123.txt");
    System.out.println("存在 : " + file1.exists());
    // 当文件不存在时创建文件
    try {
        System.out.println(file1.createNewFile());
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 创建临时文件
    try {
        // 注意文件名称不是 "456.java" ,而是 "456" + "系统生成的字符串" + ".java"
        // 临时文件 : D:\TestForlder\4563410495359450983005.java
        File file2 = File.createTempFile("456", ".java",new File("D:/TestForlder"));
        System.out.println("临时文件 : " + file2.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 删除文件
    System.out.println(file1.delete());
    // 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
    new File("D:/TestForlder/1.java").deleteOnExit();
    
    // 创建路径 , 父目录必须存在.不会自动创建父目录. 
    System.out.println("创建路径 : " + new File("D:/TestForlder/111").mkdir());
    // 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
    System.out.println("递归创建目录 : " + new File("D:/TestForlder/222/333").mkdirs());
    // 重命名文件.
    System.out.println(new File("D:/TestForlder/2.java")
            .renameTo(new File("D:/TestForlder/重命名.java")));
}

1.3 设置文件属性.

/**
 * 设置文件属性.
 */
public static void testFile_05() {
    File file = new File("D:/TestForlder/3.java");
    // 设置 所有者执行权限
    file.setExecutable(true);
    // 设置所有者或所有用户执行权限
    file.setExecutable(true, false);
    // 设置最后修改时间
    file.setLastModified(123);
    // 设置所有者读权限
    file.setReadable(true);
    // 设置所有者或所有用户的读
    file.setReadable(true, false);
    // 设置只读
    file.setReadOnly();
    // 设置所有者写权限
    file.setWritable(true);
    // 设置所有者或者所有用户的写权限
    file.setWritable(true, false);
}

1.4 基本信息API

/**
 * File 获取信息.
 */
public static void testFile_03() {
    // getName() :  返回由此抽象路径名表示的文件或目录的名称。该名称是路径名名称序列中的最后一个名称。如果路径名名称序列为空,则返回空字符串。
    // getPath() :  将此抽象路径名转换为一个路径名字符串。所得字符串使用默认名称分隔符分隔名称序列中的名称。
    // getParent() : 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
    // 局对路径
    File file = new File("D:/TestForlder");
    System.out.println("绝对路径 : " + file.getPath());
    // 相对路径
    File file2 = new File(".");
    System.out.println("相对路径 : " + file2.getPath());
    // 获取绝对路径 File JDK 文档上说是相当于 : new File(file2.getAbsolutePath());
    File fileAb = file2.getAbsoluteFile();
    File fileAb2 = new File(file.getAbsolutePath());
    System.out.println("绝对路径文件 : " + fileAb.getPath());
    // File 对象的局对路径.
    System.out.println("绝对路径 : " + file.getAbsolutePath());
    // 指定路径所在分区的剩余空间.
    System.out.println("可用空间 : " + file.getFreeSpace() / (1024 * 1024 * 1024) + " G");
    // 获取父目录名称
    System.out.println("父目录名称 : " + file.getParent());
    // 此路径上的总空间 
    System.out.println("总空间 : " + file.getTotalSpace() / (1024 * 1024 * 1024) + " G");
    // 抽象路径名指定的分区上可用于此虚拟机的字节数。
    System.out.println("JVM 可用空间 : " + file.getUsableSpace() / (1024 * 1024 * 1024) + " G");
    // 最后修改时间
    System.out.println("最后修改时间 : " + file.lastModified());
    // 文件长度
    System.out.println("文件长度 : " + file.length());
    System.out.println("执行 : " + file.canExecute());
    System.out.println("可读 : " + file.canRead());
    System.out.println("可写 : " + file.canWrite());
    System.out.println("存在 : " + file.exists());
    System.out.println("绝对路径 : " + file.isAbsolute());
    System.out.println("目录 : " + file.isDirectory());
    System.out.println("标准文件 : " + file.isFile());
    System.out.println("隐藏文件 : " + file.isHidden());
}

1.6 基本目录操作

/**
 * 目录下文件.
 */
public static void testFile_01() {
    // 文件路径.
    String filePath = "D:/TestForlder";
    // 创建目录File对象.
    File file = new File(filePath);
    // 获取目录下的所有文件. 使用正则表达式查找所有的 ".java" 文件.
    String[] list = file.list(new MainEntry.DirFilter("\\w+.java"));
    // 排序
    Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
    // 打印
    for (String string : list) {
        System.out.println("文件 : D:/TestFordler/" + string);
    }
}

/**
 * @author WSJ
 * 文件名称过滤器,<br>
 * 该类实现了 `FilenameFilter`接口.该接口只有一个`accept()`方法
 * 该目录下的每一个文件口会执行该方法,来确定是否符合条件.
 */
public static class DirFilter implements FilenameFilter {
    // 正则表达式
    private Pattern mPattern;
    public DirFilter(String regex) {
        mPattern = Pattern.compile(regex);
    }
    @Override
    public boolean accept(File dir, String name) {
        // 使用正则表达式过滤文件, 每一个文件都会在这个方法中进行判断是否符合条件.
        return mPattern.matcher(name).matches();
    }
}

相关文章

  • Java入门系列-22-IO流

    File类的使用 Java程序如何访问文件?通过 java.io.File 类 使用File类需要先创建文件对象 ...

  • Chapter 9 . Java IO

    阅读原文 Chapter 9 . Java IO 9.1 IO---File 类 java.io.File类:文件...

  • Java I/O二.File常用方法

    本文简单罗列 File类构造方法 File类常用方法 在Java语言的java.io包中,由File类提供了描述文...

  • java-IO输入输出流

    一.java.io.File类 java.io.File类用于表示文件/目录 File只用于表示文件的信息(名称,...

  • 第十五章文件与流

    JAVA程序如何访问文件属性 java.io.File类 File类访问文件属性 java中的文件及目录处理类 1...

  • Java-I/O学习(4)

    Java-I/O学习(4) File Java IO 的File类可以帮助你访问底层的文件系统,使用File类你可...

  • Java—File类详解及实践

    File类介绍 File类概述   File类是java.io包下代表与平台无关的文件和目录。File可以新建、删...

  • JavaSE-File类、递归

    目录 [TOC] 第一章:File类 1.1 File类介绍 ​ java.io.File 类是文件和目录路径...

  • Java基础知识16-I/O流2

    File 类 尽管 java.io 定义的大多数类用于操作流, 但 File 类却不是. File 类没有指定如何...

  • Java I/O 输入输出流(二)—— File类常用API介绍

    File类常用于API介绍 Java.io.File类用于表示文件(目录)。 File类只用于表示文件(目录)的信...

网友评论

      本文标题:Java File类

      本文链接:https://www.haomeiwen.com/subject/mcykbttx.html