File 类

File 类在 java.io 包中。

读写文件内容使用 IO流,操作文件/文件夹使用 File类。如新建,删除文件和文件夹;查看文件的属性,如查看文件夹中的内容。

注意,不管是文件还是目录都是使用 File操作。

创建File对象 

File 经常使用文件路径字符串来创建 File 对象,文件路径可以是绝对路径(从根目录开始的路径),也可以是相对路径

构造方法:

  • File(File parent, String child)    根据 parent 抽象路径名 child 路径名字符串 创建一个新 File 实例。
  • File(String pathname)                      通过将 给定路径名字符串 转换为 抽象路径名 来创建一个新 File 实例。(常用)
  • File(String parent, String child)   根据 parent 路径名字符串 child 路径名字符串 创建一个新 File 实例。
package cn.powernode.javase.file;

import java.io.File;
// 关联文件夹(本地已有的)
public class FileTest01 {
    public static void main(String[] args) {
        // File(String pathname) 方法
        File file = new File("D:\\iofile\\a.txt");  // 写法一:反斜杠\\
        // File file = new File("D:/iofile/a.txt");         // 写法二:斜杠/
        System.out.println(file);

        // File(String parent, String child) 方法,( parent:一般指根目录到具体文件这一段 )
        File file2 = new File("D:\\iofile", "a.txt");
        System.out.println(file2);

        File parentFile = new File("D:\\iofile");   // 父目录
        // File(File parent, String child) 方法,( parent:父目录,child:一般指具体文件名 )
        File file3 = new File(parentFile, "a.txt");
        System.out.println(file3);
    }
}
执行结果:
D:\iofile\a.txt
D:\iofile\a.txt
D:\iofile\a.txt

常用成员方法:

创建型

  • boolean createNewFile()       当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
  • boolean mkdir()                     创建此抽象路径名指定的目录
  • boolean mkdirs()                   创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。(可多级)
package cn.powernode.javase.file;
import java.io.File;
import java.io.IOException;
// (在 D:\iofile 文件夹下)创建文件、文件夹
public class FileTest02 {
    public static void main(String[] args) throws IOException {
        // 创建一个文件 b.txt
        File file1 = new File("D:\\iofile\\b.txt");  // 1.通过File描述一个文件
        file1.createNewFile();   // 2.创建该文件
        //细节1:该方法创建文件时,必须保证父路径(D:\\iofile)是存在的,否则无法创建,会抛出IOException
        //细节2:该方法只会给你创建文件,不可能创建其他类型内容;没后缀,就会创建一个没有后缀的文件。

        // 创建一级文件夹 java
        File file2 = new File("D:\\iofile\\java");
        boolean flag = file2.mkdir();    // 创建成功返回true
        System.out.println(flag);  // true
        //细节:在创建文件夹时,父路径(D:\iofile)不存在,返回false,并抛出异常

        // 创建多级文件夹 abc\java\hello
        File file3 = new File("D:\\iofile\\abc\\java\\hello");
        file3.mkdirs();

    }
}

判断型

只有当File路径实际存在时,File对象才有判断是文件夹还是文件的意义

  • boolean exists()            测试此抽象路径名表示的文件或目录是否存在
  • boolean isDirectory()    测试此抽象路径名表示的文件是否是一个目录(文件夹)
  • boolean isFile()             测试此抽象路径名表示的文件是否是一个标准文件
package cn.powernode.javase.file;
import java.io.File;
public class FileTest03 {
    public static void main(String[] args) {
        // 比如:本地已建有 D:\iofile\a.txt 文件目录
        File file = new File("D:\\iofile\\aaa\\bbb.txt"); // 假的
        File file1 = new File("D:\\iofile\\a.txt"); // 真的
        // 是否真实存在的路径
        System.out.println(file.exists());  // false
        System.out.println(file1.exists()); // true
        // 是否为一个文件
        System.out.println(file.isFile());  // false
        System.out.println(file1.isFile()); // true
        //是否为一个文件夹
        System.out.println(file.isDirectory()); // flase
        System.out.println(file1.isDirectory()); // false
    }
} 

获取型

  • String getAbsolutePath()     获取绝对路径

相对路径:省略了盘符到项目这一部分的路径,剩下的路径叫做相对路径(eg:day08\a.txt)

好处:可以拼接盘符到项目这一部分路径,根据计算机的路径不同,拼接的内容也不一样

细节:

(1)相对路径只在于当前项目下的文件才可以生效,其他磁盘路径没有相对路径的概念

(2)必须保证当前IDEA列表中的模块实际的磁盘位置也是在项目文件夹下,这时候相对路径才能生效

切记千万不要,直接将你下载好的代码模块直接导入到IDEA中,这样的相对路径是不对的

  • String getPath()       获取构造方法中的路径 (你构造方法中传入的是什么路径,原封不动地返回)
  • String getName()     获取文件或者文件夹的名称 (最后一个\后面的内容是什么,你就获取什么)
  • String[] list()             获取目录下的所有内容,返回字符串数组
  • File[] listFiles()         获取目录下的所有内容,返回File对象数组
package cn.powernode.javase.file;
import java.io.File;
public class FileTest04 {
    public static void main(String[] args) {
// 绝对路径的写法
        File file = new File("D:\\jsp\\javase02project\\day08\\a.txt");
        System.out.println(file.getAbsolutePath()); // D:\jsp\javase02project\day08\a.txt
        System.out.println(file.getPath()); // D:\jsp\javase02project\day08\a.txt
        System.out.println(file.getName()); // a.txt
//File对象必须是一个'文件夹'路径,否则 NullPointerException异常 // 返回字符串数组 File file01 = new File("D:\\jsp\\javase02project\\day08"); // 目录 String[] list = file01.list(); for (String s : list) { System.out.println(s); } /* 打印结果:(day08的下一级目录名) a.txt day08.iml src */ // 返回File对象数组 File file001 = new File("D:\\jsp\\javase02project\\day08"); // 目录 File[] A = file001.listFiles(); for (File a: A) { System.out.println(a); } /* // 打印结果:(day08的下一级目录,绝对路径形式) D:\jsp\javase02project\day08\a.txt D:\jsp\javase02project\day08\day08.iml D:\jsp\javase02project\day08\src */ // 相对路径的写法 File file2 = new File("day08\\a.txt"); System.out.println(file2.getAbsolutePath()); // D:\jsp\javase02project\day08\a.txt System.out.println(file2.getPath()); // day08\a.txt System.out.println(file2.getName()); // a.txt // list()、listFiles()的运行结果跟绝对路径的一样,这里不做演示 } }

删除

  • boolean delete()   删除一个文件或者一个空文件夹,不能删除一个有内容的文件夹
package cn.powernode.javase.file;
import java.io.File;
public class FileTest05 {
    public static void main(String[] args) {
        File file = new File("day08\\b.txt"); // 文件
        File file1 = new File("day08\\aaa"); // 空文件夹
        file.delete();
        file1.delete();
    }
}

 

posted @ 2022-05-04 19:21  鹿先森JIAN  阅读(73)  评论(0编辑  收藏  举报