关于File文件的相关知识

举报
多米诺的古牌 发表于 2022/07/30 11:38:56 2022/07/30
【摘要】 1.File类的简介       File文件类主要用于文件和目录的创建、文件的查找和文件的删除等功能,File对象代表磁盘中实际存在的文件和目录,它是通过构造方法来创建一个File对象,再通过实际需要的绝对路径来创建一个新的File实例。创建好的File实例就对应实际磁盘上的真实文件,我们就可以对这个真实文件进行创建、删除、获取相关信息等操作,这些都是会真实反应到磁盘对应的文件上的,也就是我们

1.File类的简介

      File文件类主要用于文件和目录的创建、文件的查找和文件的删除等功能,File对象代表磁盘中实际存在的文件和目录,它是通过构造方法来创建一个File对象,再通过实际需要的绝对路径来创建一个新的File实例。创建好的File实例就对应实际磁盘上的真实文件,我们就可以对这个真实文件进行创建、删除、获取相关信息等操作,这些都是会真实反应到磁盘对应的文件上的,也就是我们代码中创建了文件真实磁盘上也会创建对应的文件,删除了文件也会真实的删除对应的文件。

2.File文件的创建

   2.1 创建File对象和实例化

   首先我们创建一个File对象和他的实例,只需传好给定待操作的文件路径,再调用File的有参构造器就可以完成对象的创建和实例化操作。

File file = new File("D:\demo");

   2.2 创建文件

   文件可以分为文件夹(目录)及文件两种形式,这两种形式都可以是多级的,比如D:\demo\test\test.txt,如果想创建test.txt文件或者test目录,就需要他的上级目录存在。

   2.2.1 如果他的上级目录或者上上级目录不存在

   2.2.1.1 创建文件夹D:\demo\test

   可以通过mkdir()方法或者mkdirs()方法进行创建,都不会报错,但是调用mkdir()方法如果上级或者上级以上目录不存在,不会自动创建他缺少的这些路径目录,如果缺失其中的目录他就会啥都不做,并且返回false。

   如果通过mkdirs()方法进行创建,他会自动帮助创建缺失的目录,创建成功后会返回true。但是使用mkdirs()创建的路径中出现文件的话,他也将他当成目录来创建,所以mkdirs()虽然可以自动帮助创建缺失的目录,但是他只能创建目录不能创建文件。

  2.2.1.2 创建文件D:\demo\test\test.txt

  那么如何创建文件呢?我们可以通过createNewFile()方法进行创建一个空的文件,基本什么文件格式的文件都可以创建只不过这样创建的都是空的文件。

 上面我们创建了一个test.txt的文件夹,这时候如果调用createNewFile进行文件创建的话,会什么都不做,并且返回false。

如果上级或者上级以上目录缺失,则会IO异常报错,找不到指定路径。

如果目录中已经存在这个文件,则会什么都不做并且返回false。

2.2.2 正确的创建文件

通过上面的探索,我们知道了创建文件需要注解的哪些点,那么我们就可以避免这些,第一必须上级及以上目录存在,第二必须要创建的文件在这个路径上不存在。

首先我们先了解下File的路径上的相关方法

public static void main(String[] args) throws IOException {
//        File file = new File("F:\\demo123\\test\\test.txt");
        File file = new File("F:/demo123/test/test.txt");
        System.out.println("file.getAbsoluteFile() :" + file.getAbsoluteFile());
        System.out.println("file.getAbsolutePath() :" + file.getAbsolutePath());
        System.out.println("file.getCanonicalFile() :" + file.getCanonicalFile());
        System.out.println("file.getCanonicalPath() :" + file.getCanonicalPath());
        System.out.println("file.getParent() :" + file.getParent());
        System.out.println("file.getParentFile() :" + file.getParentFile());
        System.out.println("file.getName() :" + file.getName());
        System.out.println("file.getTotalSpace() :" + file.getTotalSpace());
        System.out.println("file.getUsableSpace() :" + file.getUsableSpace());
        System.out.println("file.getPath() :" + file.getPath());
        boolean mkflag = file.createNewFile();
        System.out.println(mkflag);
    }

返回的结果是:

file.getAbsoluteFile() :F:\demo123\test\test.txt
file.getAbsolutePath() :F:\demo123\test\test.txt
file.getCanonicalFile() :F:\demo123\test\test.txt
file.getCanonicalPath() :F:\demo123\test\test.txt
file.getParent() :F:\demo123\test
file.getParentFile() :F:\demo123\test
file.getName() :test.txt
file.getTotalSpace() :271249829888
file.getUsableSpace() :254060650496
file.getPath() :F:\demo123\test\test.txt
false

Process finished with exit code 0

接下来我们编写我们创建文件代码

public static void main(String[] args) throws IOException {
//        File file = new File("F:\\demo123\\test\\test.txt");
        File file = new File("F:/demo123/test/test.txt");
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        boolean mkFlag = false;
        if(file.exists()){
            mkFlag = file.createNewFile();
            System.out.println("调用创建文件方法结果是" + mkFlag);
            System.out.println("文件已经存在不进行创建");
        }else {
            mkFlag = file.createNewFile();
            System.out.println("调用创建文件方法结果是" + mkFlag);
        }
        if(mkFlag){
            System.out.println("文件创建成功");
        }else {
            System.out.println("文件创建失败");
        }
    }

如果创建成功返回:

调用创建文件方法结果是true
文件创建成功

如果创建失败返回:

调用创建文件方法结果是false
文件已经存在不进行创建
文件创建失败

这样我们就了解了如果创建一个文件的过程和中间要注意到的细节了。

3.File类中一些常用的方法

3.1 创建文件的三构造方式:
File file = new File(String pathname);//文件/文件夹路径对象
File file = new File(String parent, String child);//父目录绝对路径 + 子目录名称
File file = new File(File parent, String child);//父目录File对象 + 子目录名称

3.2 对文件的操作方法

file.exists():判断文件/文件夹是否存在
file.delete():删除文件/文件夹
file.isDirectory():判读是否为目录
file.isFile():判读是否为文件夹
file.mkdir():创建文件夹(仅限一级目录)
file.mkdirs():创建多及目录文件夹(包括但不限一级目录)
file.createNewFile():创建文件
file.getAbsolutePath():得到文件/文件夹的绝对路径
file.getName():得到文件/文件夹的名字
file.String():同样是得到文件/文件夹的绝对路径等于file.getAbsolutePath()
file.getParent():得到父目录的绝对路径,返回值是String类型 

file.getParentFile():得到父目录的绝对路径,返回值是File类型

file.list():得到当前目录的子目录或者文件的名称,只是文件或者目录的名称没有前面的全路径,返回String类型的数组。注意这个方法只会查询file这个实例路径下的一级的文件或者目录,不会再往第二级进行查找。
file.listFiles():得到当前目录的子目录或者文件,返回File类型的数组。注意这个方法只会查询file这个实例路径下的一级的文件或者目录,不会再往第二级进行查找。

4.创建文件的一些小知识点

4.1 创建文件的时候路径中的斜杠可以通过进行转义后\\的形式,也可以通过第二种/的形式。

File file = new File("F:\\demo123\\test\\test.txt");
File file = new File("F:/demo123/test/test.rxt");

4.2 File.separator

      创建文件路径的时候这个斜杠往往挺头疼的,因为不同系统可能不会出现不识别的情况,所以出现了这个文件分隔符File.separator保证了在任何系统下不会出错。

      在 Linux 中是不识别 ' \ '  的,在 UNIX 系统上分隔符被翻译成 ' / ',而在Windows系统上分隔符被翻译成 ' \ ' ,这样就消除了这些系统的区别。

以上就是File文件类的简单了解和总结。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。