zoukankan      html  css  js  c++  java
  • File文件类


    首先,区别 文件 和 目录 的概念:目录下可以有若干个文件


    1.概述

    java.io.File类 ,用于描述文件 和 目录的路径信息;

    使用该类可以获取文件的属性信息。如,文件名、文件大小,但是不能够修改文件的内容。

    2. 常用方法

    构造方法: File(String pathname - 根据参数指定的路径构造File类的对象。

    boolean exists()                      - 判断文件/目录是否存在。

    String getName()                   - 获取文件/目录的名称。 long length() - 获取文件的长度。

    String getAbsolutePath()        - 获取文件的绝对路径信息。

    绝对路径 - 以根目录开始的路径,如:C: D: ...
    相对路径 - 以当前目录开始的路径,如:./code
    . 表示当前目录 .. 表示当前目录的上一级目录
    以后的开发中推荐使用相对路径,所有的路径分隔符一律使用 ./。
     

       long      lastModified( )        - 获取文件的最后一次修改时间。

                                                  - 返回的是距离1970年1月1日0时0分0秒的毫秒数,与Date的有参构造搭配使用

    boolean    createNewFile( )   - 用于创建新的空文件

    boolean    mkdir( )                 - 用于创建目录。

    boolean   delete( )                - 用于删除文件/目录。

      File[]      listFiles( )              - 获取当前目录中的所有内容(文件和子目录)。

    boolean   isDirectory( )        - 判断是否为目录。 boolean isFile() - 判断是否为文件。


    代码1:指定路径下的文件存在的情况

    前期准备:在  写一个文本 hello.txt文件,文件路径为E:hello.txt   文本内容为: 

    package com.monkey1024;
    
    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class FileTest {
    
        public static void main(String[] args) {
            
            // 创建对象与参数指定的文件建立关联
            File file = new File("E:/hello.txt");   // 形参要的是String类型的 文件路径
            
            // 判断该文件是否存在
            if(file.exists()) {
                
                // 1.文件存在则打印 相关的属性:
                
                
                System.out.println("1.1.打印文件 名称: "+file.getName());
                System.out.println("1.2.打印文件 大小: "+file.length());
                System.out.println("1.3.打印文件 绝对路径: "+file.getAbsolutePath());
                System.out.println();
                
                // 2.获取文件的最后一次修改时间。
                
                System.out.println("2.1.获取文件的最后一次修改时间(毫秒数): "+file.lastModified());
                
                // 使用获取到的毫秒数来构建日期对象
                   Date date = new Date(file.lastModified());
                   System.out.println("2.2.转换为系统时间: "+date);
                   
                // 设置时间输出格式
                   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
                   String str = sdf.format(date);
                   System.out.println("2.3.设置了格式之后的文件最后一次修改时间: "+str);
                   
            }
    
        }
    
    }

    结果:

    1.1.打印文件 名称: hello.txt
    1.2.打印文件 大小: 16
    1.3.打印文件 绝对路径: E:hello.txt
    
    2.1.获取文件的最后一次修改时间(毫秒数): 1572335506500
    2.2.转换为系统时间: Tue Oct 29 15:51:46 CST 2019
    2.3.设置了格式之后的文件最后一次修改时间: 2019-10-29  15:51:46

    代码2:创建新的空文件

    package com.monkey1024;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class FileTest {
    
        public static void main(String[] args) throws IOException {
            
            // 创建对象与参数指定的文件建立关联
            File file = new File("E:/HelloWorld.java");   // 形参要的是String类型的 文件路径
            
            // 判断该文件是否存在
            if(file.exists()) {
                
                // 删除存在的文件 
                boolean b = file.delete();
                
                System.out.println("文件是否删除成功: "+b);
                   
            }else {
                
                // 若不存在,则创建新的空文件
                boolean b = file.createNewFile();
                
                System.out.println("新的空文件是否创建成功: "+b);
                
                
                
            }
    
        }
    
    }

    结果:

    新的空文件是否创建成功: true
    

    代码3:

    package com.monkey1024;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class FileTest {
    
        public static void main(String[] args) throws IOException {
            
            // 创建对象与参数指定的 目录建立关联
            File file = new File("E:\测试文件夹");   
            
            // 获取目录中的所有内容,打印每个内容
            File[] fs = file.listFiles();
            
            for (File f : fs) {
                
                // 判断 是文件 还是 目录,若是文件 则直接打印 文件名称
                if(f.isFile()) {
                    System.out.println("打印文件名称: "+f.getName());
                    
                }
                
                // 若是 目录,则打印文件名的同时,使用[]把名称括起来
                if(f.isDirectory()) {
                    System.out.println("打印目录名称: "+"["+f.getName()+"]");
                }
                
            }
         
    
        }
    
    }

    结果:

    打印文件名称: 01001.rtf
    打印文件名称: 01001.xlsx
    打印文件名称: 01002.xlsx
    打印文件名称: 01hello.java
    打印文件名称: 01test001.txt
    打印目录名称: [01第一个]
    打印目录名称: [01第三个]
    打印目录名称: [01第二个]
    打印目录名称: [01第四个]

    存在一个问题:

         这样的代码只能打印 第一层 的 文件 名称 和 目录名称


    思考?  如何打印出 指定目录中的内容,并且将子目录中的内容也要打印出来

    要求:

    1.若关联的是 普通文件,则直接打印文件名即可

    2. 若关联的是目录文件。则打印目录名的同时使用 [ ]括起来

    package com.monkey1024;
    
    import java.io.File;
    import java.io.IOException;
    public class FileTest {
        public static void dirPrint(File file) {
            
            // 1.若关联的是 普通文件,则直接打印文件名即可
    
            if(file.isFile()) {
                System.out.println("打印文件名: "+file.getName());
                
            }
            
            // 2. 若关联的是目录文件。则打印目录名的同时使用 [ ]括起来
            if(file.isDirectory()) {
                System.out.println("打印目录名: "+"["+file.getName()+"]");
                
                // 3.获取该目录中的所有文件,分别打印
                File[] files = file.listFiles();
                for (File f : files) {
                    dirPrint(f);   //方法自己调用自己
                }                
            }
        }
    
        public static void main(String[] args) throws IOException {
            
            
            File file = new File("E:\测试文件夹");
            
            // 本类中,静态方法的调用
            dirPrint(file);
    }
    
    }

    结果:

    打印目录名: [测试文件夹]
    打印文件名: 01001.rtf
    打印文件名: 01001.xlsx
    打印文件名: 01002.xlsx
    打印文件名: 01hello.java
    打印文件名: 01test001.txt
    打印目录名: [01第一个]
    打印目录名: [01第三个]
    打印目录名: [01第二个]
    打印文件名: 02BOB.bmp
    打印文件名: 02成龙.mp4
    打印目录名: [01第四个]
    打印目录名: [02孙子文件夹]
    打印文件名: 03我是孙孙子文本.txt
    打印文件名: 02李连杰.mp4
    

  • 相关阅读:
    Spring Boot Admin的介绍及使用(18)
    SpringBoot+Maven多模块项目(17)
    SpringBoot之spring.factories的用法(16)
    SpringBoot添加允许跨域(15)
    spring boot配置程热部署(14)
    SpringBoot中使用AOP(13)
    SpringBoot集成Redis(12)
    SpringBoot 防止表单重复提交-本地锁(11)
    consul
    go-micro
  • 原文地址:https://www.cnblogs.com/penguin1024/p/11759725.html
Copyright © 2011-2022 走看看