File类

概述:

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

注意:File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。

重点:file:文件;directory:文件夹/目录;path:路径

File类的四个静态成员变量(查看API文档):

字段摘要
static StringpathSeparator
          与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static charpathSeparatorChar
          与系统有关的路径分隔符。
static Stringseparator
          与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static charseparatorChar
          与系统有关的默认名称分隔符。

File.pathSeparator:路径分隔符(是一个分号,大家可以回忆配置环境变量的时候,两个path之间的分隔符就是一个分号,注意windows系统的是分号,Linux系统是冒号)

File.separator:文件名称分隔符(反斜杠,windows系统是反斜杠,Linux系统是正斜杠)

操作路径的时候尽量不要写死,布置在服务器上时未知系统,死路径容易报错。

如windows系统下的路径C:\\Users\\Desktop,写成"C:" + File.separator + "Users" + File.separator + "Desktop"就不会有错。

另外两个静态成员变量是字符串对应的char型。

 

路径:

绝对路径:是一个完整的路径,以盘符(C:D:)开始的路径,如C:\\Users\\Desktop

相对路径:是一个简化的路径,相对指的是相对于当前项目的根目录D:\\WorkSspace\\IdeaProjects,如存在D:\\WorkSspace\\IdeaProjects\\1.txt,可以简写为1.txt(可以省略项目的根目录)

注意事项:

1.路径不区分大小写

2.路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。

 

构造方法:

public File(String pathname):通过将给定的路径名字符串转换为抽象路径来创建新的File实例。

// public File(String pathname)
// 通过将给定的路径名字符串转换为抽象路径来创建新的File实例。
// 参数:pathname路径名称,可以是以文件结尾也可以是以文件夹结尾;
// 路径可以是绝对路径也可以是相对路径
// 路径可以存在,也可以是不存在
// 创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\day04-code\\a.txt"); // 不存在的路径
System.out.println(file1); // 重写了toString方法,打印了路径

public File(String parent,String child):从父路径名字符串子路径名字符串创建新的File实例。

    show02("c:\\","b.txt"); 
private static void show02(String parent,String child) {
    // public File(String parent,String child)
    // 从父路径名字符串和子路径名字符串创建新的File实例。
    /*
        参数:把路径分成了两部分:parent父路径,child子路径
        好处:父路径和子路径可以单独的书写,使用起来非常灵活,父路径和子路径都可以变化
     */
    File file = new File(parent,child);
    System.out.println(file);  c:\b.txt
}

public File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例。(不常用)

注意路径可以存在,也可以不存在,创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况。

常用方法:

获取功能的方法:

public String getAbsolutePath():返回此File的绝对路径名字符串

// public String getAbsolutePath():返回此File的绝对路径名字符串
// 获取的是构造方法中传递的路径,无论传递的是相对还是绝对路径,此方法get的都是绝对路径
File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\day04-code"); // 绝对路径
File file2 = new File("demo11"); // 相对路径
System.out.println(file1.getAbsolutePath()); // D:\WorkSpace\IdeaProjects\basic-code
System.out.println(file2.getAbsolutePath()); // D:\WorkSpace\IdeaProjects\basic-code\demo11

public String getPath():将此File转换为路径名字符串

// public String getPath():将此File转换为路径名字符串
// 获取的是构造方法中传递的路径,传递的是相对就获取相对,是绝对就获取绝对
File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\day04-code"); // 绝对路径
File file2 = new File("demo11"); // 相对路径
System.out.println(file1.getPath()); // D:\WorkSpace\IdeaProjects\basic-code
System.out.println(file2.getPath()); // demo11

public String getName():返回由此File表示的文件或目录的名称

// public String getName():返回由此File表示的文件或目录的名称
File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\day04-code"); // 文件夹
File file2 = new File("D:\\a.txt"); // 文件
System.out.println(file1.getName()); // day04-code
System.out.println(file2.getName()); // a.txt

public long length():返回由此File表示的文件的大小

获取的是构造方法指定的文件的大小,以字节为单位

注意:

1.文件夹是没有大小概念的,不能获取文件夹大小;

2.如果构造方法中给出的路径不存在,那么length给出的大小为0。

File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\day04-code"); // 文件夹
File file2 = new File("D:\\a.txt"); // 文件
System.out.println(file1.getName()); // day04-code
System.out.println(file2.getName()); // 194

对应文件大小截图:

判断功能的方法:

public boolean exists():此File表示的文件或目录是否实际存在。

/*public boolean exists():此File表示的文件或目录是否实际存在。
  用于判断构造方法中的路径是否存在
  存在返回true,不存在返回false*/
File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code"); // 绝对路径,存在
File file2 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\1.txt"); // 绝对路径,不存在
File file3 = new File("day04-code"); // 相对路径,存在
File file4 = new File("1.txt"); // 相对路径,不存在
System.out.println(file1.exists()); // true
System.out.println(file2.exists()); // false
System.out.println(file3.exists()); // true
System.out.println(file4.exists()); // false

public boolean isDirectory():此File表示的是否为目录。

public boollean isFile():此File表示的是否为文件。

注意:电脑的硬盘中只有文件/文件夹,两个方法是互斥

这两个方法使用前提,路径必须是存在的,否则都返回false。

// public boolean isDirectory():此File表示的是否为目录。
// public boollean isFile():此File表示的是否为文件。
File file1 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code"); // 绝对路径,存在,文件夹
File file2 = new File("D:\\WorkSpace\\IdeaProjects\\basic-code\\day04-code\\day04-code.iml"); // 绝对路径,存在,文件
File file3 = new File("day04-code"); // 相对路径,文件夹
File file4 = new File("day04-code\\day04-code.iml"); // 相对路径,文件
File file5 = new File("D:\\WorkSpace\\xx"); // 绝对路径不存在的文件夹
File file6 = new File("D:\\WorkSpace\\xx.txt"); // 绝对路径不存在的文件
File file7 = new File("xx"); // 相对路径不存在的文件夹
File file8 = new File("xx.txt"); // 相对路径不存在的文件
System.out.println(file1.isDirectory()); // true,绝对路径存在的文件夹
System.out.println(file2.isDirectory()); // false,绝对路径存在的文件
System.out.println(file3.isFile()); // false,相对路径存在的文件夹
System.out.println(file4.isFile()); // true,相对路径存在的文件
System.out.println(file5.isDirectory()); // false,绝对路径不存在的文件夹
System.out.println(file6.isFile()); // false,绝对路径不存在的文件夹
System.out.println(file7.isDirectory()); // false,相对路径不存在的文件夹
System.out.println(file8.isFile()); // false,相对路径不存在的文件夹

创建与删除功能的方法:

public boolean creatNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。

注意:

1.此方法只能创建文件,不能创建文件夹

2.创建文件的路径必须存在,否则会抛出异常

// public boolean creatNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
// 创建文件的路径和名称在构造方法中给出(构造方法的参数)
// 返回值是boolean值,当文件不存在会创建文件返回true,当文件已存在返回false。
File file = new File("D:\\a.txt");
try { // 该文件前的路径如果不存在或路径拒绝访问,就会抛出异常,所以需要try-catch捕捉异常或throws声明异常给调用者JVM处理
    System.out.println(file.createNewFile()); // true
} catch (IOException e) {
    e.printStackTrace();
}

public boolean delete():删除由此File表示的文件或目录。

注意:delete方法是直接在硬盘上删除文件/文件夹,不走回收站,删除要谨慎。

// public boolean delete():删除由此File表示的文件或目录。
// 已存在的文件/文件夹删除返回true,不存在的文件/文件夹返回false,文件夹中有内容,不会删除返回false
File file = new File("D:\\a.txt"); // 文件
System.out.println(file.delete()); // 第一次true,第二次false
File file1 = new File("D:\\a"); // 文件夹
System.out.println(file1.delete()); // 第一次true,第二次false
File file2 = new File("D:\\c"); // 文件夹,里面有内容
System.out.println(file2.delete()); // false

public boolean mkdir():创建由此File表示的目录。(单级空文件夹)

public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录。(多级空文件夹)

注意事项:创建文件夹的路径和名称在构造方法中给出。创建文件夹时已存在的文件夹两个方法都返回false。创建单级文件夹时,路径不存在也返回false,创建多级不会

// public boolean mkdir():创建由此File表示的目录。(单级空文件夹)
// public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录。(多级空文件夹)
File file1 = new File("D:\\a"); // 单级
System.out.println(file1.mkdir()); // 第一次true,第二次false
File file2 = new File("D:\\b\\c\\d"); // 多级
System.out.println(file2.mkdir()); // false,路径不存在
System.out.println(file2.mkdirs()); // 多级,第一次true,第二次false

目录的遍历:

public String[] list():返回一个String数组,表示该File目录中所有的子文件或目录。(目录下的文件/文件夹名称)

注意:list()方法和listFiles()方法遍历的是构造方法中给出的目录。如果构造方法中给出的目录路径不存在,会抛出空指针异常;如果构造方法中给出的路径不是目录,也会抛出空指针异常。

文件夹下的隐藏文件/文件夹名称也能获取。

/*
public String[] list():返回一个String数组,表示该File目录中所有的子文件或目录。
遍历构造方法中给出的目录,会获取目录中所有文件/文件夹的名称,把获取到的多个名称存储到一个String类型的数组中
 */
File file1 = new File("D:\\WorkSpace"); // 文件夹
File file2 = new File("D:\\01.xlsx"); // 非文件夹,文件,无法输出数组,抛出空指针异常
File file3 = new File("D:\\aaaa"); // 路径不存在,抛出空指针异常
String[] arr = file1.list();
for (String name : arr) {
    System.out.println(name);
}
/*String[] arr2 = file2.list();
for (String name : arr2) {
    System.out.println(name); // NullPointerException
}
String[] arr3 = file3.list();
for (String name : arr3) {
    System.out.println(name); // NullPointerException
}*/

运行截图:

public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录。(目录下的文件/文件夹路径)

/*
public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录。
 */
File file1 = new File("D:\\WorkSpace"); // 文件夹
File file2 = new File("D:\\01.xlsx"); // 非文件夹,文件,无法输出数组,抛出空指针异常
File file3 = new File("D:\\aaaa"); // 路径不存在,抛出空指针异常
File[] arr = file1.listFiles();
for (File file : arr) {
    System.out.println(file.toString()); // 打印的是路径
}
/*File[] arr2 = file2.listFiles();
for (File file : arr2) {
    System.out.println(file.toString()); // NullPointerException
}
File[] arr3 = file3.listFiles();
for (File file : arr2) {
    System.out.println(file.toString()); // NullPointerException
}*/

运行截图:

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值