java File 类对操作系统文件目录进行操作:增删查

File类

1,概述

File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成。

2,构造方法

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的File实例。
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的File实例。

 

3,常用方法

在计算机中,在我们操作目录的时候,这个.代表是当前目录,..代表父目录

1,文件名相关的方法:

  • getAbsolutePath():返回文件或者目录的绝对路径
  • getPath():将此抽象路径名转换为路径名字符串
  • getName():返回文件名
  • renameTo(File file):把文件剪切为一个新的路径

2,文件检测相关的方法:

  • boolean exists(): 判断File对象所对应的文件或目录是否存在
  • boolean canWrite(): 判断File对象所对应的文件和目录是否可写。如果是目录,表示是否可以在目录中创建文件。如果是文件,表示是否可以在文件中写入内容。
  • boolean canRead(): 判断File对象所对应的文件和目录是否可读。
  • boolean isFile(): 判断File对象所对应的是否是文件,而不是目录
  • boolean isDirectory(): 判断File对象所对应的是否是目录,而不是文件
  • boolean isAbsolute(): 判断File对象所对应的文件或目录是否是绝对路径。该方法消除了不通平台的差异,可以直接判断 File 对象是否为绝对路径。在Linux系统上如果文件开头是一个斜杠/那么是绝对路径,在windows系统上,如果文件开头是一个磁盘盘符,那么是绝对路径

3,获取文件的常规信息:

  • long lastModified(): 返回文件的最后修改时间戳
  • long length(): 返回文件内容的长度

4,文件增删:

  • boolean createNewFile(): File所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回 true;否则返回false
  • boolean delete(): 删除File对象所对应的文件或路径

5,目录相关的方法:

  • boolean mkdir(): 试图创建File所对应的目录,如果创建成功,则返回true; 否则返false 调用该方法时File对象必须对应一个路径,而不是一个文件
  • boolean mkdirs():创建File对应的目录,包括其父目录
  • String[] list(): 列出 File 象的所有子文件和路径名 ,返回String数组
  • File[] listFiles(): 列出File对象的所有子文件和路径,返回file数组。

 

小测试:递归查找所有子目录下文件

import javax.naming.Name;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;

/**
 * @ClassName JavaIOFileExample
 * @projectName: object1
 * @author: Zhangmingda
 * @description: XXX
 * date: 2021/4/16.
 */
public class JavaIOFileExample {
    public static void main(String[] args) {
        File file = new File("输入输出文件读写/src/test");
        file.mkdir();   //创建目录
//        String[] filelist = file.list((dir, fileName)-> fileName.endsWith(".txt")); //过滤器
        String[] nameList = file.list();
        //打印文件名
        for (String f : nameList){
            System.out.println(f);
        }
        //打印目录下所有文件
        listDir(file);
    }

    /**
     * 简单封装一下便于入口只需指定一个目录名
     * @param file
     */
    public static void listDir(File file){
        listDir(file,0);
    }

    /**
     * @param dir File 对象
     * @param spaceNum 需要打印的空格数,便于区分层级
     */
    public static void listDir(File dir, int spaceNum){
        for(int i=0; i<spaceNum; i++){
            System.out.print(" ");
        }
        System.out.println(dir.getName());
        File[] files = dir.listFiles();
        for(File subDirOrFile : files){
            if(subDirOrFile.isDirectory()){
                listDir(subDirOrFile,spaceNum + 2);
            }else{
                for(int i=0; i<spaceNum + 2; i++){
                    System.out.print(" ");
                }
                System.out.println(subDirOrFile.getName());
            }
        }
    }
}

 

 

 

 

 

 

 

 

posted on 2021-04-17 09:46  zhangmingda  阅读(228)  评论(0编辑  收藏  举报

导航