java File类的常用方法

1.概述

package com.yl.pdfdemo.day08.p4;

import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 * @Author wfj
 * @Date 2021/6/28
 * @Description File的使用
 * @Version 1.0
 */

public class FileTest {
    /**
     * 1.File类的对象,代表一个文件或者一个文件目录
     * 2.File声明在java.io下
     * 如何创建File类的实例
     *  File(String filePath)
     *  File(String parentPath,String childrenPath)
     *  File(File parentFile,String childPath)
     *
     *  2.
     *  相对路径:相较于某个路径下,指明的路径
     *  绝对路径:包含盘符在内的文件或者文件目录的路径
     *
     *  3.路径分隔符
     *  Windows: \\
     *  unix: /
     */
   @Test
    public void test() {
       //构造器1
       File file1 = new File("timi.txt");
       File file2 = new File("D:\\jdbc.properties");
       System.out.println(file1);//timi.txt
       System.out.println(file2);//D:\jdbc.properties

       //构造器2
       File file3 = new File("D:\\wechat","Tencent");
       System.out.println(file3);//D:\wechat\Tencent

       //构造器3
       File file4 = new File(file3,"keke.txt");
       System.out.println(file4);//D:\wechat\Tencent\keke.txt
   }

   @Test
   public void test2() {
        File file1 = new File("qq.txt");
        File file2 = new File("D:\\wechat\\ha.txt");
       //String getAbsolutePath():获取绝对路径
       System.out.println(file1.getAbsoluteFile());//D:\StudyProject\pdfdemo\qq.txt
       System.out.println(file2.getAbsolutePath());//D:\wechat\ha.txt
       //String getPath(): 获取路径
       System.out.println(file1.getPath());//qq.txt
       System.out.println(file2.getPath());//D:\wechat\ha.txt
       //String getName(): 获取名称
       System.out.println(file1.getName());//qq.txt
       System.out.println(file2.getName());//ha.txt
       //String getParent(): 获取上层文件目录路径,若无,则返回null
       System.out.println(file1.getParent());//null
       System.out.println(file2.getParent());//D:\wechat
       //Long Length(): 获取文件长度,即字节数,不能获取目录的长度
       System.out.println(file1.length());//0
       System.out.println(file2.length());//0
       //lastModified(): 获取最后一次修改时间
       System.out.println(file1.lastModified());//0
       System.out.println(file2.lastModified());//0

       //String[] list(): 获取指定目录下的所有文件或者文件目录的名称数组
       //File[] listFiles(): 获取指定目录下所有文件或者文件目录的File数组
       File file3 = new File("D:\\test\\test1");
       String[] list = file3.list();
       for (String s : list) {
           System.out.println(s);
           /**
            * aa.txt
            * b.doc
            * bb.txt
            */
       }

       File[] files = file3.listFiles();
       for (File file : files) {
           System.out.println(file);
           /**
            * D:\test\test1\aa.txt
            * D:\test\test1\b.doc
            * D:\test\test1\bb.txt
            */
       }

       //boolean renameTo(File dest) : 把文件重命名为指定文件
       //假设file1.renameTo(file2),要想返回true,file1得在硬盘中存在,file2在硬盘中不存在,相当把文件移动到指定的目录
       File file4 = new File("D:\\test\\test1\\aa.txt");
       File file5 = new File("D:\\qq\\a.txt");
       boolean b = file4.renameTo(file5);
       System.out.println(b);//true
   }

    @Test
    public void test3() throws IOException {
        File file1 = new File("D:\\test\\test1\\bb.txt");
        //boolean isDirectory() 是否是文件目录
        System.out.println(file1.isDirectory());//false
        //boolean isFile() 是否是文件
        System.out.println(file1.isFile());//true
        //boolean exists() 是否存在
        System.out.println(file1.exists());//true
        //boolean canRead() 是否可读
        System.out.println(file1.canRead());//true
        //boolean canWrite() 是否可写
        System.out.println(file1.canWrite());//true
        //boolean isHidden() 是否隐藏
        System.out.println(file1.isHidden());//false

        //创建文件或者目录
        //boolean createNewFile() :创建文件,若文件存在,则不创建,返回false
        //boolean delete() : 删除文件或者文件夹,注意:java的删除不走垃圾回收站
        File file3 = new File("D:yl.txt");
        if (!file3.exists()) {
            System.out.println(file3.createNewFile());//true
        } else {
            file3.delete();
            System.out.println("delete");
        }

        //boolean mkdir(): 创建文件目录,如果此文件目录存在,则不创建,如果此文件的上层目录不存在,也不创建
        //boolean mkdirs(): 创建文件目录,如果上层目录不存在,也一并创建
        //本地里只有这个路径真实存在D:\test\test1
        File file4 = new File("D:\\test\\test1\\test2\\test3");
        boolean mkdir = file4.mkdir();
        if (mkdir) {
            System.out.println("mkdir success");
        }
        File file5 = new File("D:\\test\\test1\\test2\\test4");
        boolean mkdirs = file5.mkdirs();
        if (mkdirs) {
            System.out.println("mkdirs suceess");//mkdir success
        }

    }
}

2.练习

package com.yl.pdfdemo.day08.p4;

import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 * @Author wfj
 * @Date 2021/6/28
 * @Description File练习
 * @Version 1.0
 */

public class FileTest1 {

    @Test
    public void test() throws IOException {
        //在指定目录下,创建文件
        File file = new File("D:\\test\\test1\\bb.txt");
        File file1 = new File(file.getParent(),"ha.txt");
        if (!file1.exists()) {
            file1.createNewFile();
            System.out.println(file1);
        }

        //判断指定目录下是否包含以.jpg结尾的文件,有的话直接输出文件名
        File file2 = new File("D:\\test\\test1");
        String[] list = file2.list();
        for (int i = 0; i < list.length; i++) {
            if (list[i].endsWith(".jpg")) {
                System.out.println(list[i]);
            }
        }

        //打印指定目录下的所有文件以及子目录的所有文件,使用递归
        File file3 = new File("D:\\test\\test1");
        printFile(file3);

        //删除目录,注意:要想删除目录成功,得保证要删除的目录下没有文件或者目录
        File file4 = new File("D:\\test\\test1\\test2");
        deleteFile(file4);

    }

    private void printFile(File file) {
        File[] files = file.listFiles();
        for (int i = 0; i <files.length; i++) {
            if (files[i].isFile()) {
                System.out.println(files[i]);
            } else {
                printFile(files[i]);
            }
        }
    }

    private void deleteFile(File file) {
        //先删除所有子目录以及文件
      if (file.isDirectory()) {
          File[] files = file.listFiles();
          for (File f : files) {
              deleteFile(f);
          }
      }
          file.delete();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值