【Java基础】File类 使用规则及常用方法整理
发布日期:2021-06-23 17:48:04 浏览次数:3 分类:技术文章

本文共 5551 字,大约阅读时间需要 18 分钟。

在这里插入图片描述

java中的File类是对操作系统中的文件夹或是文件的抽象。因此,每一个File类的对象都代表着一个文件或文件夹。当然,这些文件或者文件夹可以实际存在或是不存在于系统中。


创建并初始化File类对象

初始化的四方式

File类对象在初始化时有三种常用方式:

File file = new File(路径);File file = new File(父路径,子路径);File file = new File(父文件,子路径);File file = new File(URI);

总体来说,前三种初始化是围绕着路径信息展开的,这与File类对应文件的设定十分相符。

需要指出的是,路径的信息是通过字符串存储的,因此以上三种初始化方式中除了传入父文件需要传入一个File类对象以外,其余的参数都是字符串类型。

例如:

File file1 = new File("test");File file2 = new File("test","file1.txt");File file3 - new FIle(file1,"file2.txt");

需要指出的是,当文件对象不能对应一个真实存在的问件时,程序是不能判断其是否为一个文件夹还是文件的。

第四种是根据文件的统一资源标识符(URI)进行创建,这里不进行展开了。


操作文件对象

创建对象过后,就可以通过对象对文件进行操作了。

创建文件

使用成员方法创建

使用已存在的对象的成员方法 createNewFile(),我们可以创建一个对应的文件,语法如下:

对象名.createNewFile();

这个方法的返回类型是 boolean 表明是否创建成功。同时这个方法会抛出 IOExcepti 异常,表示创建过程中的错误。

例如:

File file1 = new File("tast");file1.creatNewFile();

创建目录需要使用另一个方法(一个没有后缀的命名可以是目录也可以是文件,因此创建文件还是目录应该是分开考虑的。) mkdir 来创建目录。有两个相似的方法,他们的语法格式如下:

对象名.mkdir();对象名.mkdirs();

两个方法的返回值都是布尔类型代表创建行为的成功与否。

两者的区别是,前者只能创建最终的文件夹,如果他的父路径又不存在的状况会导致创建失败。
后者可以创建包括父路径在内的一系列文件夹。
例如:

File folder = new File("test/folder");folder.mkdir();folder.mkdirs();
使用类方法创建

File类除了有成员方法可以有对象调用创建文件之外,还内置了静态的类方法 createTempFile 用于创建文件。

File.createTempFile(文件前缀,文件后缀);File.createTempFile(文件前缀,文件后缀,文件对象);

这两个类方法可以直接文件,文件的全名由前缀和后缀一起组成 (后缀需要带上 “.”) 。需要注意的是,如果使用第一个方法,不给出文件的路径。那么文件将会被放入默认的路径下。

第二个方法的含义可看做向给定的文件夹下创建一个文件。
例如:

File.createTempFile("test",".txt");File.createTempFile("test1","txt",new FIle("fileFolder"));

删除文件

使用对象成员方法 delete() 可以删除对象对应的文件,该方法返回一个布尔值,代表删除操作成功与否,格式如下:

对象名.delete();

需要注意的是:

当对象对应的是文件时,文件不存在会导致操作会失败,返回 false。
当对象对应的是目录时,目录 不存在 或 不为空 会导致操作失败,返回false。

例如:

File file = new File("Folder");file.delete();

文件重命名

使用成员方法 renameTo 可以重命名对象指向的文件。格式如下:

对象名.renameTio(File);

可以看到,这个方法需要我们传入一个文件对象作为参数,将调用对象所指的文件名称改做传入对象的名称。

例如:

File file1 = new File("test1.txt");File file2 = new File("test2.txt");file1.createNewFile();file1.renameTo(file2);file1.createNewFile();

需要注意的是,重命名一个文件不会改变对象的地址和名称。重命名后,该对象对应的文件不存在,可以重新创建。

以下几种情况会导致重命名失败:

  • 没有真实存在的文件与对象对应
  • 对象对应的文件与传入的文件的格式不同
  • 重命名文件已经存在

查看文件信息

下面介绍常用的获取文件信息的方法

文件名称

使用成员方法 getName 可以获取文件的全称(有后缀)类型是 String,语法格式如下

对象名.getName();

值得注意的是,这个方法获得的其实是对象信息,与这个对象是否对应真实的文件并无关系。即使没有真实存在的对应文件,该方法还是可以获取名称。

例如:

File file = new File("file.txt");file.createNewFile(); //可以不创建文件String name = file.getName();

文件所在路径

获取文件路径这个信息有很多种表示方法。可以是相对路径,也可以是全路径,也可以是父路径。而对于父路径也可以直接被当做文件对象来处理。下面就分别介绍几种get路径的方法。

绝对路径

使用成员方法 getAbsolutePath()可以获取绝对路径,使用成员方法 getAbsoluteFile() 获取文件对象。语法如下:

对象名.getAbsolutePath();对象名.getAbsoluteFile();

需要注意的是

例如:

File file = new File("C:\\Users\\HK-DELL\\Desktop","test.txt");File file2 = fiie.getAbsoluteFiie();String path = file.getAbsolutePath();
全路径

使用成员方法 getPath 可以获取对象的全路径,语法如下:

对象名.getPath();

例如:

File file = new File("test.txt");String path = file.getPath();
父路径

获取的父路径有两种形式,一种是路径名称,另一种是对象。他们语法如下:

对象名.getParent();对象名.getParentFile();

前者以字符串类型返回文件的父路径。后者以文件对象形式返回父文件对象。

例如:

File file = new File("C://test"."data.txt");String parentPath = file.getParent();File parentFile = file.getParentFile();

文件长度

使用成员方法 length() 可以获取文件的长度(所占空间的字节数),类型是 long。语法如下:

对象名.length();

例如:

File file = new File("data.txt");long length = file.length();

需要注意的是,当对象对应的文件不存在时,返回值为0。当对象是目录时,结果将是不确定的。

最后一次修改时间

使用成员方法 lastModified() 获取文件上一次的修改时间,返回值为 long 类型,表示距离标准时间的毫秒数。语法如下:

对象名.lastModified();

例如:

使用成员方法 exists() 判断对象对应的文件是否存在,返回一个布尔值,表示文件是否存在,语法如下:	对象名.exists();例如:```javaFile file = new File("C:\\Users\\HK-DELL\\Desktop","java.txt");long last = file.lastModified();

文件是否可读/可写/可执行

判断可读可写可执行的方法如下:

对象名.canRead();对象名.canWrite();对象名.canExecute();

其返回类型都是布尔类型,表示文件是否可读可写或可执行。

例如:

File file = new File("test.txt");boolean read = file.canRean();boolean write = file.canWrite();boolean execute = file.canExecute();

判断文件是否存在

使用成员方法 exists() 判断对象对应的文件是否存在,返回一个布尔值,表示文件是否存在,语法如下:

对象名.exists();

例如:

File file = new File("C:\\Users\\HK-DELL\\Desktop","java.txt");boolean exists = file.exists();

判断是否为文件或目录

使用成员方法 isFile() 和 isDirectory() 判断对象是否为一个文件或是目录,返回值是布尔类型,语法如下:

对象名.isFile();对象名.isDirectory();

例如:

File file = new File("C:\\Users\\HK-DELL\\Desktop","java.txt");boolean isFile = file.isFile();boolean isDir - file.isDirectory();

需要注意的是,当对象没有对应文件时,两个方法的返回都是 false。事实上,应该先使用 exists()方法判断对应文件是否存在。

判断文件是否为隐藏

使用成员方法 isHidden() 判断对象对应的文件是否隐藏,返回一个布尔值,表示文件是否隐藏,语法如下:

对象名.isHidden();

例如:

File file = new File("C:\\Users\\HK-DELL\\Desktop","java.txt");boolean hidden = file.isHidden();

获取目录下的文件

获取目录下的文件,有获取文件名称和获取文件对象两种。

获取文件名

使用成员方法 list()及其重载对象获得目录下的所有文件名称,返回值类型是 String[] 记录所有的文件名称.语法如下:

对象名.list();对象名.list(FilenameFilter);

该方法有重载方法,可以实现文件过滤。需要我们传入文件过滤器对象,但是查看源码会发现这两个类是一个接口,因此我们可以采用匿名内部类的方式来实现这个接口(有关匿名内部类的内容,)。

FilenameFilter 只包含了一个抽象方法accept(),需要传入文件所在目录以及文件名称进行判断:在这里插入图片描述

例如,期望的到src文件下的全部文件以及 .java 文件:

File folder = new File("src");if(folder.exists()){
String[] files = folder.list(); String[] javaFiles = folder.list(new FilenameFilter(){
public boolean accept(File dir,String name) {
return name.endsWith(".java"); } });}
获取文件对象

获取文件对象的方法与上文提到的获取文件名称的方法类似,提供了三种重载方法。与之不同的是,这些方法的返回类型是文件对象数组。语法如下:

对象名.listFiles();对象名.istFiles(FileFilter);对象名.listFiles(FilenameFilter);

相较于获取文件名称,获取文件对象的重载方法中多了一种使用 FileFilter 进行文件过滤的方法。

FileFilter 的方法需要传入文件对象进行判断:在这里插入图片描述

例如,仍旧是上面的例子,使用 listFiles 方法获取 所有文件,.java文件、.html文件:

File folder = new File("src");if(folder.exists()){
File[] files = folder.listFiles(); File[] javaFiles = folder.listFiles(new FilenameFilter(){
public boolean accept(File dir,String name) {
return name.endsWith(".java"); } }); File[] htmlFiles = folder.listFiles(new FileFilter(){
public boolean accept(File file) {
return file.getName().endsWith(".html"); } })}

转载地址:https://wayne-lee-jlu.blog.csdn.net/article/details/105394693 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringBoot与SpringCloud的版本对应详细版
下一篇:Spring Boot,Spring Cloud,Spring Cloud Alibaba 版本选择说明以及兼容性整理归纳

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月10日 09时47分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章