java:File类知识点总结

File类介绍

File类是位于java.io包下的一个操作文件的工具类。
File类的一个对象,代表一个文件或一个文件目录。
File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。

一:File类构造方法

File(String filePath)
String类型参数filePath,表示文件路径名称。根据路径名称创建一个新的File实例。
File(String parentPath,String childPath)
根据父路径名称和子路径名称创建一个新的File类实例
File(File parentFile,String childPath)
根据父路径的File实例和子路径名称创建一个新的File类实例。
注:如果只使用上面的三个构造方法创建File类的实例,路径表示的那个文件可以存在也可以不存在。只是表示表示一个file对象存在了而已。

路径的分类:
相对路径:相较于某个路径下,指明的路径。
绝对路径:包含盘符在内的文件或文件目录的路径。
最简单区分,绝对路径带盘符A: B:等开头,相对路径不带。

注:根据开发软件的不同
IDEA:①用main()测试,相对路径在当前的Project下。
②用JUnit中的单元测试方法测试,相对路径在当前Module下。
Eclipse中:
不管使用单元测试方法还是使用main()测试,相对路径都是当前的Project下。

注:路径分隔符
windows和DOS系统默认使用“\”来表示
UNIX和URL使用“/”来表示

二:File类的常用方法

2.1创建功能方法

public boolean createNewFile()

文件不存在,创建文件并返回true。若文件存在,则不创建,返回false

public boolean mkdir();
创建文件目录,如果此目录存在,不创建并返回false,如果此目录上层文件不存在也不创建返回false。

在这里插入图片描述
在这里插入图片描述

注:这里肯定有人会好奇文件路径分隔符为什么用\\,这与上面描述不符呀。
这是因为单斜杠“\”在编程语言中属于转义字符,例如“\n”表示换行。假如文件名
第一个字母为n,以E:\IO\IO\notive.txt为例,中间的\n表示换行,造成错误。
为了此类错误的出现,所以IDEA自动会将文件路径分隔符编程双斜杠\\。
public boolean mkdirs()

创建文件目录,如果此目录不存在或者上级目录不存在,都一并创建,返回true。
在这里插入图片描述
在这里插入图片描述

2.2:判断功能方法

public boolean isDirectory();判断是否是目录
public boolean isFile();判断是否是文件
public boolean exists();判断是否存在
public boolean canRead();判断是否刻度
public boolean canWrite();判断是否可写

上面的方法只是字面意思,就不做过多叙述

2.3:获取文件信息方法

public File getAbsoluteFile();返回绝对路径
public String getPath();返回路径
在这里插入图片描述

public String getName(); 

返回文件或目录名称,该名称是路径名名称序列中的最后一个名称。
在这里插入图片描述

public String getParent(); 

返回父目录的路径名称。
注:由下图可看出,如果创路径名没有指明父路径,就会返回null在这里插入图片描述

public long length()

返回文件的长度,以字节为单位;如果文件不存在,则返回 0L。
注不能获取目录的长度。
在这里插入图片描述

2.4:重命名

public boolean renameTo(File dest)

以file1.renameTo(file2)为例; 要想成功保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。

2.5删除操作

public boolean delete()

删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。

常见题目

1.1打印出一个目录下的所有文件

public class TestDemo {
    public static void main(String[] args) throws IOException {
       File file = new File("E:\\IO");
       printSubFile(file);
    }
    private static void printSubFile(File file) {
        //打印目录的子文件
        File[] files = file.listFiles();
        for (File f : files){
            if(f.isDirectory()){//f是文件目录
                printSubFile(f);
            }else {
                System.out.println(f.getAbsolutePath());
            }
        }
    }
}

1.2:删除某个目录下的所有文件

public class TestDemo {
    public static void main(String[] args) throws IOException {
       File file = new File("E:\\IO");
       deleteDirectory(file);
    }
    public static void deleteDirectory(File file){
        //如果file是文件直接delete
        //如果file是目录,先把它的下一级干掉,然后删除自己
        if(file.isDirectory()){
            File[] all =file.listFiles();
            //循环删除的是file的下一级
            for (File f : all){
                deleteDirectory(f);
            }
        }
        //删除自己
        file.delete();
    }
}

1.3:过滤打印某目录下所有以.txt结尾的文件

public class TestDemo {
    public static void main(String[] args) throws IOException {
       File file = new File("E:\\IO");
       String[] str = file.list();
       for (String fileName : str){
           if(fileName.endsWith(".txt")){
               System.out.println(fileName);
           }
       }
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值