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);
                }
            }
        }
    }
}
目录
相关文章
|
1月前
|
监控 C#
55.c#:file类
55.c#:file类
16 1
|
1月前
|
C#
58.c#:directory类
58.c#:directory类
12 0
|
4月前
|
C#
C# 操作文件路径(Directory)的常用静态方法
C# 操作文件路径(Directory)的常用静态方法
|
8月前
File类
File类
29 0
|
8月前
|
Java
File对象和相关方法01
File对象和相关方法01
31 0
|
8月前
|
算法
File对象和相关方法02
File对象和相关方法02
43 0
|
8月前
|
Java
File类的基本操作方法
File类的基本操作方法
38 0
|
8月前
|
存储 移动开发 Java
IO流以及File类
IO流以及File类
File类的使用(一)下
File类的使用(一)
142 0
File类的使用(一)下