JavaSE19——file文件类-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

file文件类

在 Java File 类是 java.io 包中唯一代表磁盘文件本身的对象
File 类不能访问文件内容本身如果需要访问文件内容本身则需要使用输入/输出流。

  1. File(String path)如果 path 是实际存在的路径则该 File 对象表示的是目录如果 path 是文件名则该 File 对象表示的是文件。
  2. File(String path, String name)path 是路径名name 是文件名。
  3. File(File dir, String name)dir 是路径对象name 是文件名。

File类的使用

1. 绝对路径 vs 相对路径

1绝对路径是一个固定的路径,从盘符开始
2相对路径是相对于某个位置开始

  • main方法中的相对路径是相对于当前工程
  • 单元测试方法中的相对路径是相对于当前模块

2. 路径分隔符

1 路径中的每级目录之间用一个路径分隔符隔开。

2路径分隔符和系统有关

  • windowsDOS系统默认使用"\"来表示
  • UNIX和URL使用"/"来表示

3 Java程序支持跨平台运行因此路径分隔符要慎用。
为了解决这个隐患File类提供了一个常量
public static final String separator:根据操作系统动态的提供分隔符。

File file1 = new File("d:\\demo\\info.txt");
File file2 = new File("d:" + File.separator + "demo" + File.separator + "info.txt");
File file3 = new File("d:/demo");

file常用api

方法名解释方法名解释
mkdir()创建此抽象路径名指定的目录exists()测试此抽象路径名表示的文件或目录是否存在
mkdirs()创建此抽象路径名指定的目录包括所有必需但不存在的父目录isDirectory()测试此抽象路径名表示的文件是否是一个目录
createNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时不可分地创建一个新的空文件isFile()测试此抽象路径名表示的文件是否是一个标准文件
delete()删除此抽象路径名表示的文件或目录isHidden()测试此抽象路径名指定的文件是否是一个隐藏文件
canRead()测试应用程序是否可以读取此抽象路径名表示的文件getName()返回由此抽象路径名表示的文件或目录的名称
方法名解释方法名解释
getAbsolutePath()返回此抽象路径名的绝对路径名字符串getParent()返回此抽象路径名父目录的路径名字符串如果此路径名没有指定父目录则返回 null
length()返回由此抽象路径名表示的文件的长度list()返回一个字符串数组这些字符串指定此抽象路径名表示的目录中的文件和目录
renameTo(File dest)重新命名此抽象路径名表示的文件listFiles()返回一个抽象路径名数组这些路径名表示此抽象路径名表示的目录中的文件
canWrite()测试应用程序是否可以修改此抽象路径名表示的文件getPath()将此抽象路径名转换为一个路径名字符串

注意事项 Java中的删除不走回收站。 要删除一个文件目录请注意该文件目录内不能包含文件或者文件目录。

案例演示1

    @Test
    public void test2(){
        File file1 = new File("hello.txt");
        File file2 = new File("d:\\io\\hi.txt");

        System.out.println(file1.getAbsolutePath());
        System.out.println(file1.getPath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());
        System.out.println(file1.length());
        System.out.println(new Date(file1.lastModified()));

        System.out.println();

        System.out.println(file2.getAbsolutePath());
        System.out.println(file2.getPath());
        System.out.println(file2.getName());
        System.out.println(file2.getParent());
        System.out.println(file2.length());
        System.out.println(file2.lastModified());
    }
    @Test
    public void test3(){
        File file = new File("D:\\workspace_idea1\\JavaSenior");

        String[] list = file.list();
        for(String s : list){
            System.out.println(s);
        }

        System.out.println();

        File[] files = file.listFiles();
        for(File f : files){
            System.out.println(f);
        }

    }

案例演示2

 @Test
    public void test4(){
        File file1 = new File("hello.txt");
        File file2 = new File("D:\\io\\hi.txt");

        boolean renameTo = file2.renameTo(file1);
        System.out.println(renameTo);

    }

案例演示3

  @Test
    public void test5(){
        File file1 = new File("hello.txt");
        file1 = new File("hello1.txt");

        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());

        System.out.println();

        File file2 = new File("d:\\io");
        file2 = new File("d:\\io1");
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());
        System.out.println(file2.exists());
        System.out.println(file2.canRead());
        System.out.println(file2.canWrite());
        System.out.println(file2.isHidden());

    }

案例演示4

  @Test
    public void test5(){
        File file1 = new File("hello.txt");
        file1 = new File("hello1.txt");

        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());

        System.out.println();

        File file2 = new File("d:\\io");
        file2 = new File("d:\\io1");
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());
        System.out.println(file2.exists());
        System.out.println(file2.canRead());
        System.out.println(file2.canWrite());
        System.out.println(file2.isHidden());

    }

获取文件属性

在 Java 中获取文件属性信息的第一步是先创建一个 File 类对象并指向一个已存在的文件 然后调用表 1 中的方法进行操作。

例 1

假设有一个文件位于 C:\windows\notepad.exe

public class Test02 {
    public static void main(String[] args) {
        String path = "C:/windows/"; // 指定文件所在的目录
        File f = new File(path, "notepad.exe"); // 建立File变量,并设定由f变量引用
        System.out.println("C:\\windows\\notepad.exe文件信息如下");
        System.out.println("============================================");
        System.out.println("文件长度" + f.length() + "字节");
        System.out.println("文件或者目录" + (f.isFile() ? "是文件" : "不是文件"));
        System.out.println("文件或者目录" + (f.isDirectory() ? "是目录" : "不是目录"));
        System.out.println("是否可读" + (f.canRead() ? "可读取" : "不可读取"));
        System.out.println("是否可写" + (f.canWrite() ? "可写入" : "不可写入"));
        System.out.println("是否隐藏" + (f.isHidden() ? "是隐藏文件" : "不是隐藏文件"));
        System.out.println("最后修改日期" + new Date(f.lastModified()));
        System.out.println("文件名称" + f.getName());
        System.out.println("文件路径" + f.getPath());
        System.out.println("绝对路径" + f.getAbsolutePath());
    }
}

在上述代码中 File 类构造方法的第一个参数指定文件所在位置这里使用C:/

C:\windows\notepad.exe文件信息如下
============================================
文件长度193536字节
文件或者目录是文件
文件或者目录不是目录
是否可读可读取
是否可写可写入
是否隐藏不是隐藏文件
最后修改日期Mon Dec 28 02:55:19 CST 2016
文件名称notepad.exe
文件路径C:\windows\notepad.exe
绝对路径C:\windows\notepad.exe

创建和删除文件

File 类不仅可以获取已知文件的属性信息还可以在指定路径创建文件以及删除一个文件。创建文件需要调用 createNewFile() 方法删除文件需要调用 delete() 方法。无论是创建还是删除文件通常都先调用 exists() 方法判断文件是否存在。

例 1

假设要在 C 盘上创建一个 test.txt 文件程序启动时会检测该文件是否存在如果不存在则创建如果存在则删除它再创建。

public class Test03 {
    public static void main(String[] args) throws IOException {
        File f = new File("C:\\test.txt"); // 创建指向文件的File对象
        if (f.exists()) // 判断文件是否存在
        {
            f.delete(); // 存在则先删除
        }
        f.createNewFile(); // 再创建
    }
}

创建和删除目录

File 类除了对文件的创建和删除外还可以创建和删除目录。创建目录需要调用 mkdir() 方法删除目录需要调用 delete() 方法。无论是创建还是删除目录都可以调用 exists() 方法判断目录是否存在。

例 3

编写一个程序判断 C 盘根目录下是否存在 config 目录如果存在则先删除再创建。实现代码如下

public class Test04 {
    public static void main(String[] args) {
        String path = "C:/config/"; // 指定目录位置
        File f = new File(path); // 创建File对象
        if (f.exists()) {
            f.delete();
        }
        f.mkdir(); // 创建目录
    }
}

遍历目录

通过遍历目录可以在指定的目录中查找文件或者显示所有的文件列表。File 类的 list() 方法提供了遍历目录功能

1. String[] list()

该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组如果调用的 File 对象不是目录则返回 null。
提示但不保证所得数组中的相同字符串将以特定顺序出现特别是不保证它们按字母顺序出现。该方法的作用与 list() 方法相同不同的是返回数组中仅包含符合 filter 过滤器的文件和目录如果 filter 为 null则接受所有名称。假设要遍历 C 盘根目录下的所有文件和目录并显示文件或目录名称、类型及大小。使用 list() 方法的实现代码如下

public class Test05 {
    public static void main(String[] args) {
        File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用
        System.out.println("文件名称\t\t文件类型\t\t文件大小");
        System.out.println("===================================================");
        String fileList[] = f.list(); // 调用不带参数的list()方法
        for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
            System.out.print(fileList[i] + "\t\t");
            System.out.print((new File("C:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t");
            System.out.println((new File("C:/", fileList[i])).length() + "字节");
        }
    }
}
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java