java之File类【详解】

写在前面

本博客中所有的操作目录,均在D:下载的电影 目录下,结构如下:
在这里插入图片描述


概述

java.io.File文件目录路径名的抽象表现形式,其中定义了一些与平台无关的方法来操作文件,主要用于文件和目录的创建、查找和删除等操作。

java.io.File既可以表示文件,也可以表示文件夹(目录)

很多应用场景需要使用到java.io.File类,比如说查看文件的修改日期,文件的类型、目录、大小和读写权限,文件上传与下载,文件的创建、删除、检索以及备份等等。

java.io.File操作的是文件属性,并非文件内容

File 类的实例不可变,一旦创建了一个File对象,那么它表示的抽象路径名将永不改变


静态成员变量

public static final String pathSeparator : 与系统有关的路径分隔符("" + pathSeparatorChar)public static final char pathSeparatorChar : 与系统有关的路径分隔符。 

public static final String separator : 与系统有关的默认名称分隔符("" + separatorChar)public static final char separatorChar :与系统有关的默认名称分隔符。 

//与系统有关的文件名称分隔符,windows为反斜杠 \   linux为正斜杠 /
public static final char pathSeparatorChar = fs.getPathSeparator();
public static final String pathSeparator = "" + pathSeparatorChar;

//与系统有关的路径分隔符(windows为冒号 ;    linux系统为分号 :   
public static final char separatorChar = fs.getSeparator();
public static final String separator = "" + separatorChar;

文件路径

  • 绝对路径:完整路径,是指文件在硬盘上真正存在的路径,也就是以盘符(C: or D:)开始的路径,比如 D:\下载的电影\Japanese\学习.avi
  • 相对路径:相对于目标文件的位置,比如以 D:\下载的电影\Japanese\学习.avi 为参考位置,那么 D:\下载的电影\欧美\观摩.rmvb 的相对路径为 …/欧美/观摩.rmvb

注意:

  1. 文件路径不区分大小写
  2. windwos系统的文件名称分隔符使用反斜杠,而反斜杠是转义字符,所以在java语言中,两个反斜杠代表一个普通的反斜杠。

构造方法

public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
public File(URI uri) : 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 

注意

  • File类对象的构造并不依赖于传入路径是否真实存在
  • File类对象的地址是否合法是通过枚举类 pathStatus 进行判定的。
/**
     * Enum type that indicates the status of a file path.
     */
    private static enum PathStatus {
    INVALID, CHECKED };

获取方法

public String getAbsolutePath() :获取File的绝对路径。
public String getPath() :获取File的构造路径。
public String getName() :获取File的名称。
public long length() :获取File的字节大小。
public String getParent():获取File的父目录路径;如果没有,则返回 null。
public long lastModified() : 获取File文件最后一次修改的时间(毫秒)。

代码示例:

import java.io.File;

/**
 * @author layman
 */
public class Demo01 {
   
    public static void main(String[] args) {
   
        File file = new File("Japanese\\学习.avi");
        // 获取绝对路径
        System.out.println("文件绝对路径: " + file.getAbsolutePath()); // D:\下载的电影\Japanese\学习.avi
        // 将抽象路径名转换为一个路径名字符串。
        System.out.println("文件构造路径: " + file.getPath());  // Japanese\学习.avi
        // 获取父目录路径名字符串
        System.out.println("父目录路径: " + file.getParent()); // Japanese
        // 获取抽象路径名表示的文件或文件夹(末尾部分)
        System.out.println("文件名称: " + file.getName()); // 学习.avi
        /**
         *获取文件大小,以字节为单位。如果路径名不存在,则返回 0
         *(注意:文件夹是没有大小的,也返回0)
         */
        System.out.println("文件大小:" + file.length() + " 字节");   //1,325,116,788
        System.out.println("文件最后的修改时间:" + file.lastModified() + " 毫秒");
    }
}

运行结果:
文件绝对路径: D:\下载的电影\Japanese\学习.avi
文件构造路径: Japanese\学习.avi
父目录路径: Japanese
文件名称: 学习.avi
文件大小:1,325,116,788 字节
文件最后的修改时间:1608649905362 毫秒

判断方法

public boolean exists() :此File表示的文件或目录是否实际存在。
public boolean isFile() :此File表示的是否为文件。
public boolean isDirectory() :此File表示的是否为目录。
public boolean isAbsolute() :此抽象路径名是否为绝对路径名。
public boolean isHidden() : 此File表示的文件或目录是否是一个隐藏文件。
public boolean canExecute() :测试此File表示的文件或目录是否能被执行
public boolean canRead():测试此File表示的文件或目录是否能被读取
public boolean canWrite():测试此File表示的文件或目录是否能被修改

代码示例:

import java.io.File;

/**
 * @author layman
 */
public class Demo02 {
   
    public static void main(String[] args) {
   
        File file = new File("D:\\下载的电影\\Japanese\\学习.avi");
        File file1 = new File("D:\\下载的电影\\Japanese");
        File file2 = new File("津巴布韦\\学习.avi");
        // 判断文件或文件夹是否存在
        System.out.println("D:\\下载的电影\\Japanese\\学习.avi 是否存在:" + file.exists());
        System.out.println("津巴布韦\\学习.avi 是否存在:" + file2.exists());
        System.out.println("--------------------------------------------------");
        // 判断是否为文件或者文件夹
        System.out.println("D:\\下载的电影\\Japanese\\学习.avi 是否是文件:"+ file.isFile());
        System.out.println("D:\\下载的电影\\Japanese\\学习.avi 是否是目录:"+ file.isDirectory(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值