Java【File类】

Java【File类】

一、概述

java.io.File 文件和目录路径名的抽象表示形式。java把电脑中的文件和文件夹(目录)封装成了一个File类,我们可以使用File类操作文件和文件夹。

java.io.File 是一个与系统无关的类,任何的操作系统都可使用这个类中的方法。

二、静态成员变量
  • static final String pathSeparator : 路径分隔符的字符串类型,由字符类型和空字符串拼接得到

The system-dependent path-separator character, represented as a string for convenience.

// 源码
public static final String pathSeparator = "" + pathSeparatorChar;
  • static final char pathSeparatorChar : 路径分隔符的字符类型

The system-dependent path-separator character.

  • static final String separator : 文件名称分隔符的字符串类型,由字符类型和空字符串拼接得到

The system-dependent default name-separator character, represented as a string for convenience.

public static final String separator = "" + separatorChar;
  • static final char separatorChar: 文件名称分隔符的字符类型

The system-dependent default name-separator character.

二、构造方法

创建File对象,只是把路径封装为File对象,不考虑路径是否真实存在

  • File(File parent, String child)父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象

  • File(String pathname)最为常用的方法,路径可以以文件结尾,也可以以文件夹结尾,相对路径/绝对路径都可以,路径存不存在也都可以创建File对象。

  • File(String parent, String child)父路径和子路径可以单独书写,使用起来非常灵活,父路径和子路径都可以变化

三、常用方法
1、获取功能的方法
  • public String getAbsolutePath():返回此File的绝对路径名称字符串。
  • public String getPath():将此File转换为路径名字字符串。
  • public String getName():返回由此File表示的文件或者目录的名称。
  • public long length():返回由此File表示的文件的长度。

代码实例

public class Demo03File {
    public static void main(String[] args) {
        File f = new File("/usr/yanzhuang/zhaoxiao.java");
        System.out.println("文件绝对路径:" + f.getAbsolutePath());
        System.out.println("文件的构造路径:" + f.getPath());
        System.out.println("文件名称:" + f.getName());
        System.out.println("文件长度:" + f.length() + "字节");


        File f2 = new File("/Users/yanzhuang/Downloads");
        System.out.println("目录的绝对路径:" + f2.getAbsolutePath());
        System.out.println("目录的构造路径:" + f2.getPath());
        System.out.println("目录名称:" + f2.getName());
        System.out.println("目录长度" + f2.length() + "字节"); // 只能获取文件的大小,无法使用此方法获取文件夹的大小
    }
}
2、判断功能的方法
  • public boolean exists():此File表示的文件或目录是否实际存在
  • public boolean isDirectory():此File表示的文件是否为目录
  • public boolean isFile():此File表示的是否是文件

代码实例:

public class Demo04File {
    public static void main(String[] args) {
        File f = new File("/Users/yanzhuang/Downloads/2022.rar");
        File f2 = new File("/Users/yanzhuang");

        // 判断是否存在
        System.out.println("/Users/yanzhuang/Downloads/2022.rar 是否存在:" + f.exists());
        System.out.println("/Users/yanzhuang 是否存在:" + f2.exists());

        // 判断文件还是目录
        System.out.println("/Users/yanzhuang 文件?:" + f2.isFile());
        System.out.println("/Users/yanzhuang 目录?:" + f2.isDirectory());
    }
}
3、创建删除功能的方法
  • public boolean createNewFile():当且仅当具有该名称的文件上不存在时,创建一个新的空文件。
  • public boolean delete():删除由此File表示的文件或目录
  • public boolean mkdir():创建由此File表示的目录。
  • public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录。

代码实例:

public class Demo05File {
    public static void main(String[] args) throws IOException {
        // 文件的创建
        File f = new File("zhao.txt");
        System.out.println("是否存在:" + f.exists());// false
        System.out.println("是否创建" + f.createNewFile()); // true
        System.out.println("是否存在:" + f.exists());// true
        // 目录的创建
        File f2 = new File("newDir");
        System.out.println("是否存在:" + f2.exists());
        System.out.println("是否创建:" + f2.mkdir());
        System.out.println("是否存在:" + f2.exists());
        // 创建多级目录
        File f3 = new File("newDir/newDirB");
        System.out.println("是否存在:" + f3.exists());
        System.out.println("是否创建:" + f3.mkdirs());
        System.out.println("是否存在:" + f3.exists());
    }
}
四、目录遍历
  • public String[] list():返回一个String数组,表示该File目录总的所有子文件或目录。
  • public File[] listFiles():返回一个Files数组,表示该File目录中的所有的子文件或目录。

注意:

(1) list方法和listFiles方法遍历的是构造方法中给出的目录

(2) 如果构造方法中给出的目录的路径不存在,会抛出空指针异常

(3) 如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

(4) 隐藏的文件、文件夹也能获取到

代码实现:

public class Demo06File {
    public static void main(String[] args) {
        File dir = new File("/Users/yanzhuang");

        // 获取当前目录下的文件以及文件夹的名称。
        String[] names = dir.list();
        for(String name : names) {
            System.out.println(name);
        }
        System.out.println("--------------");
        // 获取当前目录下的文件及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
        File[] files = dir.listFiles();
        for (File file : files) {
            System.out.println(file);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值