File类的了解和使用

简介: File类的了解和使用

File类

1,File类概述

  • File类的对象代表操作系统的文件(文件、文件夹)
  • File类在java.io.File包下。
  • File类提供了诸如:创建文件对象代表文件,获取文件信息(大小、修改时间)、删除文件、创建文件(文件夹)等功能

2,File的创建

构造器

方法名 说明
public File(String pathname) 根据文件路径创建文件对象
public File(String parent, String child) parent为父路径,child为子路径创建File对象。
public File(File parent, String child) 根据一个父File对象和子文件路径创建File对象

==注意:==

  • File对象可以定位文件和文件夹
  • File封装的对象仅仅是一个==路径名==,这个路径可以是存在的,也可以是不存在的。

路径分隔符

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

使用 "\"来表示分隔符,但因为 "\"是转义字符,所以需要 "\\"来表示分隔符

使用"/"来表示分隔符,不需要转移

使用"File.separator"来表示分隔符

File类提供了一个常量:public static final String separator,它就代表分隔符

File file1 = new File("D:\\桌面\\workspace\\File\\ioFile\\src\\data.txt");    // 绝对路径

File file3 = new File("ioFile\\src\\data.txt");                                // 相对路径

File file3 = new File("ioFile/src/data.txt");                                // 分隔符

File file4 = new File("ioFile" + File.separator + "src" +  File.separator + "data.txt");    // separator分隔符

绝对路径和相对路径

  • 绝对路径:固定的路径,是从盘符开始的
  • 相对路径:是相对于某个位置开始寻找

    • main中的相对路径是相对==当前工程==
    • test中的相对路径是相对==当前模块==

3,File的常用方法

3.1 判断文件类型

方法名称 说明
public boolean isDirectory() 判断此路径名表示的File是否为文件夹
public boolean isFile() 判断此路径名表示的File是否为文件
public boolean exists() 判断此路径名表示的File是否存在
File file = new File("ioFile\\src\\data.txt");

boolean f1 = file.isAbsolute();
System.out.println(f1);            // false

boolean f2 = file.isFile();
System.out.println(f2);            // true

boolean f3 = file.exists();
System.out.println(f3);            // true

3.2 获取文件信息

方法名称 说明
public long length() 返回文件的大小(字节数量)
public String getAbsolutePath() 返回文件的绝对路径
public String getPath() 返回定义文件时使用的路径
public String getName() 返回文件的名称,带后缀
public long lastModified() 返回文件的最后修改时间(时间毫秒值)
File file = new File("ioFile\\src\\data.txt");

long length = file.length();
System.out.println(length);            // 6

String path = file.getAbsolutePath();
System.out.println(path);        // D:\桌面\workspace\File\ioFile\src\data.txt

String path1 = file.getPath();
System.out.println(path1);        // ioFile\src\data.txt

String name = file.getName();
System.out.println(name);        // data.txt

long time = file.lastModified();
System.out.println(time);        // 1667986220731

3.3 文件创建

方法名称 说明
public boolean createNewFile() 创建一个新的空的文件
public boolean mkdir() 只能创建一级文件夹
public boolean mkdirs() 可以创建多级文件夹
File file1 = new File("ioFile\\src\\data.txt");
boolean newFile1 = file1.createNewFile();
System.out.println(newFile1);                        // false 已经存在

File file2 = new File("ioFile\\src\\data2.txt");
boolean newFile2 = file2.createNewFile();
System.out.println(newFile2);                        // true 创建成功

File file3 = new File("ioFile\\src\\createFile");
boolean mkdir1 = file3.mkdir();
System.out.println(mkdir1);                            // true

File file4 = new File("ioFile\\src\\createFile\\createFile2");
boolean mkdir2 = file4.mkdir();
System.out.println(mkdir2);                            // false mkdir不能创建多级目录

File file5 = new File("ioFile\\src\\createFile\\createFile2");
boolean mkdirs1 = file5.mkdirs();
System.out.println(mkdirs1);                        // true  mkdirs可以创建多级目录

3.4 文件删除

方法名称 说明
public boolean delete() 删除由此抽象路径名表示的文件或空文件夹
boolean delete1 = file2.delete();
System.out.println(delete1);            // true

==注意:==

  • delete方法默认只能删除文件和==空文件夹==
  • delete方法直接删除不走回收站
  • 文件在使用时也可以强制删除

3.5 遍历功能

方法名称 说明
public String[] list() 获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
public File[] listFiles() 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回

==ListFiles注意事项:==

  • 当文件不存在时或者代表文件时,返回null
  • 当文件对象代表一个空文件夹时,返回一个长度为0的数组
  • 当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
  • 当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  • 当没有权限访问该文件夹时,返回null

4, 文件搜索案例

描述:在一个盘符下,搜索一个名字为XXX的文件

分析:

  • 先定位出的应该是一级文件对象
  • 遍历全部一级文件对象,判断是否是文件
  • 如果是文件,判断是否是自己想要的
  • 如果是文件夹,需要继续递归进去重复上述过程
public static void searchFile(File dir, String fileName){
    if(dir == null || dir.isFile()) {
        System.out.println("输入的非法文件夹!");
    }else{
        File[] files = dir.listFiles();
        if(files != null && files.length > 0){
            for (File file : files) {
                if(file.isFile()){
                    if(file.getName().contains(fileName)){
                        System.out.println("找到了" + file.getAbsolutePath());
                        return;
                    }
                }else{
                    searchFile(file, fileName);
                }
            }
        }
    }
}
目录
相关文章
|
7月前
|
监控 C#
55.c#:file类
55.c#:file类
126 1
|
7月前
|
C#
58.c#:directory类
58.c#:directory类
132 0
|
7月前
|
编译器 API C语言
C/C++ 获取文件名的方法:分享一些实用的获取文件名的方法和技巧(__FILE__,__builtin_FILE(),__BASE_FILE__等)
C/C++ 获取文件名的方法:分享一些实用的获取文件名的方法和技巧(__FILE__,__builtin_FILE(),__BASE_FILE__等)
751 0
|
3月前
|
Java
File类的基本使用【 File类+IO流知识回顾①】
这篇文章回顾了Java中File类的基本使用,包括创建File对象、获取文件数据信息、判断文件存在与否、创建和删除文件目录,以及遍历文件目录的方法。
File类的基本使用【 File类+IO流知识回顾①】
|
3月前
|
Java Linux Windows
File类的使用
本文介绍了Java中File类的使用,包括其静态成员变量、构造方法、常用方法,以及如何通过文件过滤器来查找特定类型的文件。
File类的使用
|
4月前
|
API
|
6月前
|
C++
C++ 实现一个不能被copy的类
C++ 实现一个不能被copy的类
|
7月前
|
Java API Windows
File 类及其方法
File 类及其方法
62 1
File对象和相关方法02
File对象和相关方法02
File对象和相关方法01
File对象和相关方法01