File(路径的分割符不一样、构造方法、常见方法、遍历子文件.子文件夹、遍历文件夹下所有的后代文件或者子文件夹)

位于: java.io包

表示文件或者文件夹

功能:对文件或者文件夹进行 创建, 删除,查看等操作, 不能读取文件的内容。

1.路径的分割符不一样

java跨平台的:

不同的平台: 路径的分割符不一样:

windows: \

linux,macx: /

java程序写路径: / 不管是在linux, windows也能识别

\: 在java中转义符开始符号: java代码: \\

区分不同的操作系统:

使用File的静态的常量:

public static final String separator

path分割符:

linux操作系统: :

windows: ;

使用File的常量:

public static final String pathSeparator

2.四个构造方法

        //File file = new File("D:\\test.txt");
        //完整路径
        File file = new File("D:/test.txt");
​
        //上级目录
        File file1 = new File("D:/图片","1.jpg");
​
        File parent = new File("D:/图片");
        File file2 = new File(parent, "1.jpg");
        
        //文件夹
        File file3 = new File("D:\\nginx-1.18.0\\conf");

3.常见方法

(1)判断文件/文件夹是否存在,如果文件存在则不是目录就是文件

exists()

isFile()

isDirectory()

System.out.println(file3.exists());
System.out.println("是否是文件:"+file.isFile()); //true
System.out.println("是否是目录:"+file3.isDirectory());//false

(2)创建文件

createNewFile()

        //创建文件: 如果上级目录不存在, 抛异常:IOException
        File file = new File("d:/test.txt");
        try {
           boolean rs =  file.createNewFile();
            System.out.println(rs);
            //删除
            file.delete();
        } catch (IOException e) {
            e.printStackTrace();
        }
​

(3)创建文件夹

mkdir()

 //创建文件夹
    File file2 = new File("d:/a");
  /*  boolean rs1 = file2.mkdir();
    System.out.println("是否创建成功:"+rs1);*/
​
    boolean rs2 = file2.mkdirs();
    System.out.println("是否创建成功:"+rs2);
​
    //删除文件夹
   boolean rs3 =  file2.delete();
    System.out.println("是否删除成功:"+rs3);

(4)创建文件夹

4.遍历子文件.子文件夹

(1)遍历子文件和文件夹

 File file = new File("D:/a");
//子文件/子文件夹
//list()
       String[] subFileStrs = file.list();
        for (String subFileStr : subFileStrs) {
            System.out.println(subFileStr);
        }

(2)得到指定类型命名的子文件

1.返回文件名

//使用FilenameFilter过滤
String[] subFileStrs = file.list(new FilenameFilter() {
//把目录下每一个子文件或者子目录, 调用一次accept()
//根据accept()方法返回值,判断是否添加到subFileStrs数组
// 如果返回值true,添加, false: 不添加
//dir: 上级目录  name: 子文件/子文件夹的名字
@Override
public boolean accept(File dir, String name) {
                //false: 过滤掉
                //return false;
                //isFile()
                //getPath() 获取路径
                //System.out.println(dir.getPath());
                //System.out.println(name);
                //得到 子文件/子文件夹File对象
                File subFile = new File(dir,name);
                return subFile.isFile() && name.endsWith(".txt") ;
            }
        });
        for (String subFileStr : subFileStrs) {
            System.out.println(subFileStr);
        }

2.返回此文件目录+文件名

//返回File数组
        File[] subFiles = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File subFile = new File(dir,name);
                return subFile.isFile() && name.endsWith(".txt") ;
            }
        });
        for (File subFile : subFiles) {
            // getParent() 获取上级目录路径
            //getParentFile() 获取上级目录File对象
            System.out.println(subFile.getPath());
        }

3.情况类推,筛选条件返回需要用到的

 File[] subFiles = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                //System.out.println(pathname.getPath());
                return pathname.isFile();
            }
        });

5.遍历文件夹下所有的后代文件或者子文件夹

得到子的目录后开始递归

public static void iterSubFile(File file){
        //得到子的
        File[] subFiles = file.listFiles();
        for (File subFile : subFiles) {
            //getName() 文件名/文件夹名
            //System.out.println(subFile.getName());
            //递归
            if(subFile.isDirectory()){//文件夹
                iterSubFile(subFile);
            }else{ //文件
                subFile.delete();
            }
        }
        //删除空目录
        file.delete();
​
    }
​
    public static void main(String[] args) {
       // iterSubFile(new File("D:/a"));
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值