File类+Path类

File类

java.io.File 类是文件和目录 路径名 的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

Java虚拟机中的一个 File 实例表示一个路径,这个路径可能对应一个文件或一个目录或盘符。

1. File 类构造方法

构造方法描述
File(String pathname)根据指定路径名创建一个新的 File 实例。
File(String parent, String child)根据指定的父路径名字符串和子路径名字符串创建一个新的 File 实例。
File(File parent, String child)根据指定的父路径名和子路径名字符串创建一个新的 File 实例。
File(URI uri)根据指定的文件 URI 创建一个新的 File 实例。

这些构造方法可以根据不同的参数形式来创建 File 实例,用于表示文件或目录的抽象路径。其中,参数的具体含义如下:

  • pathname:表示文件或目录的路径名的字符串形式。
  • parent:表示父路径的字符串形式。
  • child:表示子路径的字符串形式。
  • uri:表示文件 URI 类型的实例。

2. File 类常用方法

方法名作用返回值列表
boolean exists()判断文件或目录是否存在true:存在,false:不存在
boolean isFile()判断当前对象是否表示一个文件true:是文件,false:不是文件
boolean isDirectory()判断当前对象是否表示一个目录true:是目录,false:不是目录
String getName()获取文件或目录的名称返回文件或目录的名称字符串
String getPath()获取文件或目录的路径返回文件或目录的路径字符串
String getAbsolutePath()获取文件或目录的绝对路径返回文件或目录的绝对路径字符串
long length()获取文件的大小(字节数)返回文件的大小(字节数)
long lastModified()获取文件或目录的最后修改时间(毫秒值)返回表示最后修改时间的毫秒数
boolean createNewFile()创建一个新文件true:创建成功,false:创建失败
boolean mkdir()创建一个新目录true:创建成功,false:创建失败
boolean mkdirs()创建一个新目录,包括任何必需但不存在的父目录true:创建成功,false:创建失败
boolean delete()删除文件或目录true:删除成功,false:删除失败
File[] listFiles()返回表示该目录下所有文件和文件夹的 File 对象数组返回表示该目录下所有文件和文件夹的 File 对象数组
String[] list()返回表示该目录下所有文件和文件夹名称的字符串数组返回表示该目录下所有文件和文件夹名称的字符串数组
boolean renameTo(File dest)重命名文件或目录true:重命名成功,false:重命名失败
boolean canRead()判断文件是否可读true:可读,false:不可读
boolean canWrite()判断文件是否可写true:可写,false:不可写
boolean setReadable(boolean readable)设置文件的可读属性true:设置成功,false:设置失败
boolean setWritable(boolean writable)设置文件的可写属性true:设置成功,false:设置失败
boolean setExecutable(boolean executable)设置文件的可执行属性true:设置成功,false:设置失败
boolean canExecute()判断文件是否可执行true:可执行,false:不可执行
File[] listFiles(FilenameFilter filter)返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组
File[] listFiles(FileFilter filter)返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组
boolean isHidden()判断文件或目录是否被隐藏true:被隐藏,false:未隐藏
File[] listRoots()返回计算机系统中的根目录列表返回计算机系统中的根目录的 File 对象数组

代码示例

import java.io.File;
import java.io.IOException;
import java.rmi.RemoteException;
import java.util.Arrays;

public class FileExample {
    public static void main(String[] args) throws IOException {
        /**
         * 三种构造方法
         */
        File file = new File("C:\\Users\\Lenovo\\Pictures\\Camera Roll");
        File png = new File(file,"1 (30).jpg");
        File jpg = new File("C:\\Users\\Lenovo\\Pictures\\Camera Roll","9.jpg");
        // 文件或目录是否存在
        System.out.println(file.exists());  // true
        // 判断是否为目录
        System.out.println(file.isDirectory());  // true
        // 判断是否为文件
        System.out.println(file.isFile());  // false
        System.out.println(png.isFile());
        // 判断是否为隐藏文件或目录
        System.out.println(file.isHidden());  // false
        // 判断是否为绝对路径
        System.out.println(file.isAbsolute());  // true
        // 获取路径和名称
        String path = file.getPath();
        System.out.println(path);  // C:\Users\Lenovo\Pictures\Camera Roll
        String name = file.getName();
        System.out.println(name);  // Camera Roll

        System.out.println(png.getPath());  // C:\Users\Lenovo\Pictures\Camera Roll\j.png
        System.out.println(png.getName());  // j.png
        System.out.println(png.getAbsolutePath());  // D:\kaifamiao\codes\Java\JavaLearn\j.png

        // 获取修改文件最后一次的时间戳
        long l = png.lastModified();
        System.out.println(l);  // 0
        System.out.println(file.lastModified());  // 1669354428403
        // 获取文件大小
        long length = jpg.length();
        System.out.println(length);  // 515913(字节)

        // 获取分区剩余空间
        System.out.println(file.getFreeSpace());  // 17147736064
        System.out.println(png.getFreeSpace());  // 0
        // 获取分区总空间
        System.out.println(file.getTotalSpace());  // 107374178304
        System.out.println(jpg.getTotalSpace());  // 107374178304
        // 获取分区已用空间
        System.out.println(file.getUsableSpace());  // 17147736064
        System.out.println(png.getUsableSpace());  // 0

        // 查看文件权限(canRead() 可阅读?canWrite() 可写?canExwcute() 可执行?)
        System.out.println(jpg.canRead());  // true
        System.out.println(jpg.canWrite());  // true
        System.out.println(jpg.canExecute());  // true
        System.out.println(file.canRead());  // true
        System.out.println(file.canWrite());  // true
        System.out.println(file.canExecute());  // true

        // 查看目录的子目录,文件(listFiles()绝对路径 + 文件名,list() 文件名)
        File[] files = file.listFiles();
        System.out.println(Arrays.toString(files));  // [C:\Users\Lenovo\Pictures\Camera Roll\003953-16382903936365.jpg ...]
        String[] list = file.list();
        System.out.println(Arrays.toString(list));  // [003953-16382903936365.jpg ...]
        File[] files1 = jpg.listFiles();
        System.out.println(Arrays.toString(files1));  // null
        String[] list1 = jpg.list();
        System.out.println(Arrays.toString(list1));  // null
        // 删除文件或目录
        System.out.println(png.delete());
        // 重命名
        boolean b = png.renameTo(new File("1.png"));
        System.out.println(b);

        File io = new File(file,"剑来.txt");
        if (!io.exists()) {
            try {
                io.createNewFile();  // 创建文件
            } catch (IOException e) {
                throw new RemoteException();
            } finally {
                io.mkdir(); // 创建最后一级目录
                io.mkdirs();  // 创建多级目录
            }
        }
    }
}
File[] files = file.listFiles(new FileFilter() {
     @Override
     public boolean accept(File pathname) {
     // 筛选以 png 结尾的文件
         return pathname.getName().endsWith(".png"); 
     }
});
System.out.println(Arrays.toString(files));  // [C:\Users\Lenovo\Pictures\Camera Roll\n.png]

Path 类

Path 是 Java 中用于表示文件或目录路径的类。它提供了一种平台无关的方式来操作和处理文件系统上的文件和目录。

使用 Path 类可以执行以下操作:

  1. 创建一个 Path 实例:可以使用 Paths 类的 get() 方法创建 Path 实例。例如:

    Path path = Paths.get("C:\\myfolder\\myfile.txt");
    
  2. 获取路径信息:可以使用 Path 实例的方法来获取路径的各个组成部分,如文件名、父路径、根路径等。例如:

    Path fileName = path.getFileName(); // 获取文件名(包括扩展名)
    Path parentPath = path.getParent(); // 获取父路径
    Path rootPath = path.getRoot(); // 获取根路径
    
  3. 判断路径属性:可以使用 Path 实例的方法来判断路径的属性,如是否为绝对路径、是否为相对路径等。例如:

    boolean isAbsolute = path.isAbsolute(); // 判断是否为绝对路径
    boolean isRelative = path.isRelative(); // 判断是否为相对路径
    
  4. 连接路径:可以使用 Path 实例的 resolve() 方法连接多个路径,生成新的路径。例如:

    Path newPath = path.resolve("subfolder").resolve("anotherfile.txt");
    
  5. 解析路径:可以使用 Path 实例的 resolveSibling() 方法解析相对路径或绝对路径中的兄弟路径。例如:

    Path resolvedPath = path.resolveSibling("siblingfile.txt");
    
  6. 转换为字符串:可以使用 Path 实例的 toString() 方法将 Path 对象转换为表示路径的字符串。例如:

    String pathString = path.toString();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值