• 文件操作和IO(2):Java中操作文件


    目录

    一、File的属性

    二、File的构造方法

    三、File的方法

    四、代码示例

    1、getName,getParent,getPath方法

    2、getAbsolutePath,getCanonicalPath方法

    3、exists,isDirectory,createNewFile方法

    4、createNewFile,delete,deleteOnExit

    5、list,listFiles,mkdir,mkdirs,renameTo方法


            本章内容,主要涉及文件的元信息、路径的操作,并不存在对文件的读写操作。

            Java通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意:有File对象并不意味着真实存在该文件。

    以下是对File的概述:

    一、File的属性

    修饰符及类型属性说明
    static StringpathSeparator依赖于系统的路径分隔符,String
    类型的表示
    static charpathSeparatorChar依赖于系统的路径分隔符,char类

    这里路径直接的分隔符是根据系统自动调整的,在开发过程中还是更推荐使用正斜杠 “ / ”。windows也支持正斜杠。


    二、File的构造方法

    签名说明
    File(File parent, String child)根据父目录 + 孩子文件路径,创建⼀个新的 File 实例
    File(String pathname)根据文件路径创建⼀个新的 File 实例,路径可以是绝
    对路径或者相对路径
    File(String parent, String child)根据父目录 + 孩子文件路径,创建⼀个新的 File 实
    例,父目录用路径表示

    这里主要介绍中间的构造方法,中间的是最常用的。注意:这里的决定路径有两种情况:

            1、如果是在idea中运行程序,此时工作目录就是在项目所在的目录。

            2、如果把代码打包成一个jar包,此时工作目录就是在jar包所在目录。


    三、File的方法

    修饰符及返回值类型方法签名说明
    StringgetParent()返回 File 对象的⽗⽬录⽂件路径
    StringgetName()返回 FIle 对象的纯⽂件名称
    StringgetPath()返回 File 对象的⽂件路径
    StringgetAbsolutePath()返回File 对象的绝对路径
    StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
    booleanexists()判断 File 对象描述的⽂件是否真实
    存在
    boolean                         isDirectory()                  判断 File 对象代表的⽂件是否是⼀个⽬录
    booleanisFile()判断 File 对象代表的⽂件是否是⼀
    个普通⽂件
    booleancreateNewFile()根据 File对象,⾃动创建⼀个空⽂
    件。成功创建后返回 true
    booleandelete()根据 File 对象,删除该⽂件。成功
    删除后返回 true 
    voiddeleteOnExit()根据 File 对象,标注⽂件将被删
    除,删除动作会到 JVM 运⾏结束时
    才会进⾏
    String[]list()返回 File 对象代表的⽬录下的所有
    ⽂件名
    File[]listFiles()返回 File 对象代表的⽬录下的所有
    ⽂件,以 File 对象表⽰
    booleanmkdir()创建 File 对象代表的⽬录
    booleanmkdirs()创建 File 对象代表的⽬录,如果必
    要,会创建中间⽬录
    booleanrenameTo(File dest)进⾏⽂件改名,也可以视为我们平
    时的剪切、粘贴操作
    booleancanRead()判断⽤⼾是否对⽂件有可读权
    booleancanWrite()判断⽤⼾是否对⽂件有可写权限

    四、代码示例

    1、getName,getParent,getPath方法

    绝对路径的File对象,代码如下

    1. public class IODemo1 {
    2. public static void main(String[] args) {
    3. //指定文件的路径
    4. File f1 = new File("C:/IOTest/test.txt");//绝对路径
    5. System.out.println(f1.getPath());//返回File对象的⽂件路径
    6. System.out.println(f1.getParent());//返回 File 对象的⽗⽬录⽂件路径
    7. System.out.println(f1.getName());//返回 FIle 对象的纯⽂件名称
    8. }
    9. }

    执行结果:

    相对路径的File对象,代码如下

    1. public class IODemo1 {
    2. public static void main(String[] args) {
    3. //指定文件的路径
    4. File f1 = new File("./test.txt");//绝对路径
    5. System.out.println(f1.getPath());//返回File对象的⽂件路径
    6. System.out.println(f1.getParent());//返回 File 对象的⽗⽬录⽂件路径
    7. System.out.println(f1.getName());//返回 FIle 对象的纯⽂件名称
    8. }
    9. }

    执行结果:

    2、getAbsolutePath,getCanonicalPath方法

    使用绝对路径创造一个File对象,代码如下

    1. public class IODemo2 {
    2. public static void main(String[] args) throws IOException {
    3. File f = new File("C:/IOTest/test.txt");//绝对路径
    4. System.out.println(f.getAbsolutePath());//返回File对象的绝对路径
    5. System.out.println(f.getCanonicalPath());//返回File对象的修饰过的绝对路径
    6. }
    7. }

    执行结果:

    使用相对路径创建File对象,代码如下:

    1. public class IODemo2 {
    2. public static void main(String[] args) throws IOException {
    3. File f = new File("./test.txt");//绝对路径
    4. System.out.println(f.getAbsolutePath());//返回File对象的绝对路径
    5. System.out.println(f.getCanonicalPath());//返回File对象的修饰过的绝对路径
    6. }
    7. }

    执行结果:

    可以看出,上面方法在绝对路径中没有啥差别,但在相对路径的就有些许差别。getCanonicalPath返回File对象的修饰过的绝对路径,也就没有了点 ' . ' 修饰。

    3、exists,isDirectory,createNewFile方法

    使用相对路径创建File对象,代码如下:

    1. public class IODemo3 {
    2. public static void main(String[] args) {
    3. File f = new File("./test.txt");
    4. boolean ret1 = f.exists();//判断 File 对象描述的⽂件是否真实存在
    5. boolean ret2 = f.isDirectory();//判断 File 对象代表的⽂件是否是⼀个⽬录
    6. boolean ret3 = f.isFile();//判断 File 对象代表的⽂件是否是⼀个普通⽂件
    7. System.out.println(ret1);
    8. System.out.println(ret2);
    9. System.out.println(ret3);
    10. }
    11. }

    执行结果:

    4、createNewFile,delete,deleteOnExit

    先创造出一个文件,使用createNewFile方法,代码如下:

    1. public class IODemo4 {
    2. public static void main(String[] args) throws IOException {
    3. File f = new File("./test.txt");
    4. boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 true
    5. System.out.println(ret1);
    6. }
    7. }

    执行代码前:

    执行代码后:

    多了test.txt文件

    delete方法删除test.txt文件,代码如下:

    1. public class IODemo4 {
    2. public static void main(String[] args) throws IOException {
    3. File f = new File("./test.txt");
    4. boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 true
    5. System.out.println(ret1);
    6. boolean ret = f.delete();//根据 File 对象,删除该⽂件。成功删除后返回 true 
    7. System.out.println(ret);
    8. }
    9. }

    执行结果:

    test.txt文件没有了。

    deleteOnExit方法,在程序执行完后才会删除指定的文件,代码如下:

    1. public class IODemo4 {
    2. public static void main(String[] args) throws IOException, InterruptedException {
    3. File f = new File("./test.txt");
    4. boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 true
    5. System.out.println(ret1);//根据 File 对象,标注⽂件将被删除,删除动作会到 JVM 运⾏结束时才会进⾏
    6. f.deleteOnExit();
    7. Thread.sleep(5000);
    8. }
    9. }

    执行前:

    有test.txt文件。

    执行后:

    过5秒后才会删除test.txt文件。

    5、list,listFiles,mkdir,mkdirs,renameTo方法

    list:

    代码如下:

    1. public class IODemo5 {
    2. public static void main(String[] args) {
    3. File f = new File(".");
    4. String[] files = f.list();//返回 File 对象代表的⽬录下的所有⽂件名
    5. System.out.println(Arrays.toString(files));
    6. }
    7. }

    执行结果:

    listFiles:

    代码如下:

    1. public class IODemo5 {
    2. public static void main(String[] args) {
    3. // String[] files = f.list();//返回 File 对象代表的⽬录下的所有⽂件名
    4. // System.out.println(Arrays.toString(files));
    5. File f = new File(".");
    6. File[] files = f.listFiles();//返回File对象代表的⽬录下的所有⽂件,以File对象表⽰
    7. System.out.println(Arrays.toString(files));
    8. }
    9. }

    执行结果:

    mkdir:

    代码如下:

    1. public class IODemo6 {
    2. public static void main(String[] args) {
    3. File f = new File("./aaa");//创建 File 对象代表的⽬录
    4. boolean ret1 = f.mkdir();
    5. System.out.println(ret1);
    6. }
    7. }

    执行前:

    执行后:

    多出了aaa目录。

    mkdirs:

    代码如下:

    1. public class IODemo7 {
    2. public static void main(String[] args) {
    3. File f = new File("./aaa/bbb/ccc");//创建 File 对象代表的⽬录,如果必 要,会创建中间⽬录
    4. boolean ret = f.mkdirs();
    5. System.out.println(ret);
    6. }
    7. }

    执行前:

    执行后:

    当前目录下多了aaa/bbb/ccc。

    renameTo:

    代码如下:

    1. public class IODemo8 {
    2. public static void main(String[] args) {
    3. File src = new File("./test2.txt");
    4. File dest = new File("./test.txt");
    5. src.renameTo(dest);//进⾏⽂件改名,也可以视为我们平时的剪切、粘贴操作
    6. }
    7. }

    执行前:

    文件名是test.txt。

    执行后:

    文件名是test2.txt。

    除重命名功能外,renameTo还有移动功能(移动比复制、粘贴效率高,前提是在同一硬盘上)。


    都看到这了,点个赞再走吧,谢谢谢谢谢

  • 相关阅读:
    京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
    golang 实现并发任务同步
    无病呻吟之高三回忆随笔@_@
    自定义字符串排序(791.leetcode,string)-------------------c++实现
    AMEYA360:蔡司扫描电镜Sigma系列:扫描电子显微镜的用途原来这么多
    R语言使用attach函数绑定dataframe数据(可以直接使用列名称访问数据)
    ROS+Pytorch的联合使用示例(语义分割)
    06_玩转Docker容器:80分钟一口气学完docker+k8s!带你掌握docker+k8s所有核心知识点,全程干货,无废话!
    React面试题总结(一)
    FL Studio21水果编曲软件如何切换成官方中文版
  • 原文地址:https://blog.csdn.net/cool_tao6/article/details/136429277