0
点赞
收藏
分享

微信扫一扫

Java系列(44)——文件


本系列博客汇总在这里:Java系列_汇总


目录

  • ​​一、文件的构造器​​
  • ​​二、文件的创建​​
  • ​​三、文件的删除​​
  • ​​四、文件的判断​​
  • ​​五、文件的获取功能​​
  • ​​六、目录的子文件获取​​
  • ​​七、文件夹的遍历​​

Java系列(44)——文件_相对路径

一、文件的构造器

Java系列(44)——文件_java_02

  1. 示例
  2. //第一种构造器
    //创建文件的对象(建议使用)
    File file = new File("C:\\Users\\NULL\\Desktop\\demo.wyx");
    System.out.println(file);

    // 使用反斜线来创建对象
    File file1 = new File("C:/Users/NULL/Desktop/demo.wyx");
    System.out.println(file1);

    // 第二种构造器
    File file2 = new File("C:/Users/NULL/Desktop/", "demo.wyx");
    System.out.println(file2);

    // 第三种构造器,创建文件的父级文件
    File file3 = new File("C:/Users/NULL/Desktop/");
    File file4 = new File(file3, "demo.wyx");
    System.out.println(file4);
  3. Java系列(44)——文件_文件_03

二、文件的创建

  1. 文件
    Java系列(44)——文件_创建文件_04

  2. 目录
    Java系列(44)——文件_创建文件_05

  3. 使用绝对路径(完整路径)创建文件和目录

    // 创建文件的对象(建议使用)
    File file = new File("C:/Users/NULL/Desktop/demo.wyx");
    // 根据对象来创建文件,如果这个文件已经存在就会返回 false
    boolean isSuccess = file.createNewFile();
    System.out.println(isSuccess);

    // 创建目录

    File file1 = new File("C:/Users/NULL/Desktop/demo1");
    // 单级目录创建
    boolean isSuc = file1.mkdir();
    System.out.println(isSuc);

    File file2 = new File("C:/Users/NULL/Desktop/Demo/demo");
    // 多级目录创建
    boolean isSuc1 = file2.mkdirs();
    System.out.println(isSuc1);

    Java系列(44)——文件_java_06

  4. 使用相对路径(工程文件)创建文件和目录

    //使用相对路径来创建文件,不指定判读,相对路径就是工程文件夹
    File file = new File("a.txt");
    file.createNewFile();

    //使用相对路径来创建目录
    File file1 = new File("a/b");
    file1.mkdirs();

    //删除
    //file.delete();
    //file1.delete();

    // 在package里面来创建文件
    File file2 = new File("src/cn/tx/hello.mp3");
    file2.createNewFile();

    //删除
    //file2.delete();

    Java系列(44)——文件_相对路径_07
    Java系列(44)——文件_相对路径_08
    Java系列(44)——文件_desktop_09

三、文件的删除

Java系列(44)——文件_创建文件_10

  • 示例源码
  • //创建文件的对象(建议使用)
    File file = new File("C:/Users/NULL/Desktop/demo.wyx");
    //根据对象来删除文件,如果这个文件不存在就会返回false
    //删除文件不会再回收站里面
    boolean isDelete = file.delete();
    System.out.println(isDelete);
  • 删除目录
  • //创建文件的对象(建议使用)
    File file = new File("C:/Users/NULL/Desktop/demo1");
    //根据对象来删除目录,如果这个目录不存在就会返回false
    //如果目录中不是空就删不掉,一定是空目录才可以删除
    boolean isDeleteDir = file.delete();
    System.out.println(isDeleteDir);

四、文件的判断

Java系列(44)——文件_相对路径_11

  • 示例
  • //使用相对路劲
    File file = new File("a.txt");
    //file.createNewFile();
    System.out.println("判断文件是否存在:" + file.exists());
    System.out.println("判断是否是文件:" + file.isFile());
    System.out.println("判断是否是文件夹:" + file.isDirectory());
    System.out.println("判断文件是否是绝对路径:" + file.isAbsolute());
    System.out.println("判断文件是否可读:" + file.canRead());
    System.out.println("判断文件是否可写:" + file.canWrite());
    System.out.println("判断文件是否是隐藏:" + file.isHidden());
  • Java系列(44)——文件_文件_12

五、文件的获取功能

Java系列(44)——文件_文件_13

  • 示例
  • File file = new File("a.txt");
    // 获得文件的绝对路径
    String aPath = file.getAbsolutePath();
    System.out.println(aPath);
    // 获得相对路径
    String path = file.getPath();
    System.out.println(path);
    // 获得文件名(包含后缀)
    String name = file.getName();
    System.out.println(name);
    // 获得文件大小
    // 1TB = 1024GB = 1024*1024MB = 1024*1024*1024KB = 1024*1024*1024*1024B
    long length = file.length();
    System.out.println(length);

    // 获得最后的修改时间
    long time = file.lastModified();
    // 创建时间格式化的对象
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    // 创建时间对象
    Date date = new Date(time);
    String timeStr = sdf.format(date);
    System.out.println(timeStr);
  • Java系列(44)——文件_java_14

六、目录的子文件获取

Java系列(44)——文件_java_15

  • 示例
  • //获得系统的根目录
    File[] files = File.listRoots();
    for (File file : files)
    {
    System.out.println(file);
    }

    System.out.println("------------------------------------");
    //定义一个文件对象
    File file = new File("C:/Users/NULL/Desktop/");
    //获得指定的目录下的所有孩子文件
    File[] files1 = file.listFiles();
    for (File file2 : files1)
    {
    System.out.println(file2);
    }
    System.out.println("---------------------------------------");
    //获得指定目录下的所有孩子文件的名字
    String[] fileNames = file.list();
    for (String fileName : fileNames)
    {
    System.out.println(fileName);
    }
  • Java系列(44)——文件_文件_16

七、文件夹的遍历

  1. 递归:递归就是方法调用方法自身,递归一定有跳出条件。

  2. 例:
    如何使用递归的方式计算阶乘?
    5!= 5​4​3​2​1

    N!= n*(n-1)!

    public class FileDemo8
    {

    public static void main(String[] args) throws IOException
    {

    int result = fn(10);
    System.out.println(result);
    }

    /**
    * n! = n*(n-1)!
    */
    public static int fn(int n)
    {
    if (n >= 2)
    {
    // 对方法自身的调用
    return n * fn(n - 1);
    }
    return 1;
    }
    }

    Java系列(44)——文件_相对路径_17

  3. 使用递归思想查询文件夹的内部所有文件

    public class FileDemo9
    {
    public static int level = 1;

    public static void main(String[] args) throws IOException
    {

    File file = new File("C:/Users/NULL/Desktop/");
    printFile(file);
    }

    /**
    * 遍历文件夹下的所有文件
    *
    */
    public static void printFile(File file)
    {
    // 判断文件是否是文件夹
    if (!file.isDirectory())
    {
    return;
    }
    if (!file.exists())
    {
    return;
    }
    level++;
    // 遍历文件夹内部的文件
    File[] files = file.listFiles();
    for (File file1 : files)
    {
    for (int i = 0; i < level; i++)
    {
    System.out.print("\t");
    }
    // 获得文件名
    String name = file1.getName();
    System.out.println(name);
    if (file1.isDirectory())
    {
    // 递归调用
    printFile(file1);
    }
    }
    level--;
    }
    }

    Java系列(44)——文件_java_18
    Java系列(44)——文件_创建文件_19

  4. 如何删除一个文件夹下的所有文件(不包括目录)?

    public class FileDemo10
    {
    public static int level = 1;

    public static void main(String[] args) throws IOException
    {

    File file = new File("C:/Users/NULL/Desktop/Demo/");
    deleteFile(file);
    }

    /**
    * 遍历文件夹下的所有文件
    */
    public static void deleteFile(File file)
    {
    // 判断文件是否是文件夹
    if (!file.isDirectory())
    {
    return;
    }
    if (!file.exists())
    {
    return;
    }
    // 遍历文件夹内部的文件
    File[] files = file.listFiles();
    for (File file1 : files)
    {
    // 如果是文件就删除
    if (file1.isFile())
    {
    file1.delete();
    } else
    {
    // 如果是文件夹就继续遍历
    deleteFile(file1);
    }
    }
    }
    }

    Java系列(44)——文件_相对路径_20
    思考:如何删除一个文件夹下的所有文件(包括目录)?

如有错误,欢迎指正!



举报

相关推荐

0 条评论