Java中File类如何创建与删除文件、目录或多级目录

File类

File类概述和构造方法

File类介绍
  1. 它是文件和目录路径名的抽象表示
  2. 文件和目录是可以通过File封装成对象的
  3. 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
File类的构造方法
  • 方法分类
    方法名说明
    File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
    File(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例
    File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例
  • 示例代码
public class FileDemo01 {
    public static void main(String[] args) {
        //File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
        File f1 = new File("E:\\itcast\\java.txt");
        System.out.println(f1);

        //File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例
        File f2 = new File("E:\\itcast","java.txt");
        System.out.println(f2);

        //File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的 File实例
        File f3 = new File("E:\\itcast");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4);
    }
}
绝对路径和相对路径

绝对路径

  • 是一个完整的路径,从盘符开始

相对路径

  • 是一个简化的路径,相对当前项目下的路径

示例代码

public class FileDemo02 {
    public static void main(String[] args) {
        // 是一个完整的路径,从盘符开始
        File file1 = new File("D:\\itcest\\java.txt");

        // 是一个简化的路径,从当前项目根目录开始
        File file2 = new File("java.txt");
        File file3 = new File("模块名\\java.txt");
    }
}
File类创建功能
  • 方法分类

    方法名说明
    public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
    public boolean mkdir()创建由此抽象路径名命名的目录
    public boolean mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
  • 示例代码

public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        //需求1:我要在E:\\itcast目录下创建一个文件java.txt
        File f1 = new File("E:\\itcast\\java.txt");
        System.out.println(f1.createNewFile());
        System.out.println("--------");

        //需求2:我要在E:\\itcast目录下创建一个目录JavaSE
        File f2 = new File("E:\\itcast\\JavaSE");
        System.out.println(f2.mkdir());
        System.out.println("--------");

        //需求3:我要在E:\\itcast目录下创建一个多级目录JavaWEB\\HTML
        File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
        System.out.println(f3.mkdirs());
        System.out.println("--------");

        //需求4:我要在E:\\itcast目录下创建一个文件javase.txt
        File f4 = new File("E:\\itcast\\javase.txt");
        System.out.println(f4.createNewFile());
    }
}

File类删除功能
  • 方法分类

    方法名说明
    public boolean delete()删除由此抽象路径名表示的文件或目录
  • 示例代码

public class FileDemo03 {
    public static void main(String[] args) throws IOException {
        //需求1:在当前模块目录下创建java.txt文件
        File f1 = new File("myFile\\java.txt");
		//System.out.println(f1.createNewFile());

        //需求2:删除当前模块目录下的java.txt文件
        System.out.println(f1.delete());
        System.out.println("--------");

        //需求3:在当前模块目录下创建itcast目录
        File f2 = new File("myFile\\itcast");
//        System.out.println(f2.mkdir());

        //需求4:删除当前模块目录下的itcast目录
        System.out.println(f2.delete());
        System.out.println("--------");

        //需求5:在当前模块下创建一个目录itcast,然后在该目录下创建一个文件java.txt
        File f3 = new File("myFile\\itcast");
//        System.out.println(f3.mkdir());
        File f4 = new File("myFile\\itcast\\java.txt");
//        System.out.println(f4.createNewFile());

        //需求6:删除当前模块下的目录itcast
        System.out.println(f4.delete());
        System.out.println(f3.delete());
    }
}
  • 删除一个拥有多级目录的文件夹
    用delete只能删除一个文件或一个空文件夹,若想要删除一个多级目录的文件夹需要调用递归的方式进行删除
  • 示例代码
public class Test2 {
    public static void main(String[] args) {
        //实现思路
        //1.遍历这个多级文件夹,获取每一个文件或目录,
        //若为空直接删除,若不为空,进入子文件夹,进行相同的操作
        //2.最后再删除这个文件夹

        File src = new File("C:\\Users\\Desktop\\itcast");
        deleteDir(src);
    }
  
	//1.定义一个方法,接收一个File对象
    private static void deleteDir(File src) {
        //先删掉这个文件夹里面所有的内容.
        //递归 方法在方法体中自己调用自己.
        //注意: 可以解决所有文件夹和递归相结合的题目
        //2.遍历这个File对象,获取它下边的每个文件和文件夹对象
        File[] files = src.listFiles();
        //3.判断当前遍历到的File对象是文件还是文件夹
        for (File file : files) {
            //4.如果是文件,直接删除
            if(file.isFile()){
                file.delete();
            }else{
                //5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
                deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象
            }
        }
        //6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
        src.delete();
    }

}
File类判断和获取功能
  • 判断功能

    方法名说明
    public boolean isDirectory()测试此抽象路径名表示的File是否为目录
    public boolean isFile()测试此抽象路径名表示的File是否为文件
    public boolean exists()测试此抽象路径名表示的File是否存在
  • 获取功能

    方法名说明
    public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
    public String getPath()将此抽象路径名转换为路径名字符串
    public String getName()返回由此抽象路径名表示的文件或目录的名称
    public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组
  • 示例代码

public class FileDemo04 {
    public static void main(String[] args) {
        //创建一个File对象
        File f = new File("myFile\\java.txt");

//        public boolean isDirectory():测试此抽象路径名表示的File是否为目录
//        public boolean isFile():测试此抽象路径名表示的File是否为文件
//        public boolean exists():测试此抽象路径名表示的File是否存在
        System.out.println(f.isDirectory());//bool类型
        System.out.println(f.isFile());
        System.out.println(f.exists());

//        public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
//        public String getPath():将此抽象路径名转换为路径名字符串
//        public String getName():返回由此抽象路径名表示的文件或目录的名称
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getPath());
        System.out.println(f.getName());
        System.out.println("--------");

//        public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组
        File f2 = new File("E:\\itcast");
        File[] fileArray = f2.listFiles();
        for(File file : fileArray) {
//            System.out.println(file);
//            System.out.println(file.getName());
            if(file.isFile()) {
                System.out.println(file.getName());
            }
        }
    }
}
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.java.io.File: 该用来表示一个文件目录,使用它可以: 1:访问文件目录的属性(名字,大小,最后修改时间等) 2:操作文件目录(创建删除) eg: File file = new File("."+File.separator+"test.txt"); 1)表示当前项目根目录下的文件test.txt,在描述文件目录时,我们指定的路径最好,使 用相对路径,否则会出现系统差异,不利于跨平台。 2)".":当前目录,在eclipse运行时,表示当前项目的根目录 3)java.io.File 由于目录的层级分隔符不同系统也有差异: windows:"\",例如:d:\xxx.txt linux:"/" 所以应当使用File的常量表示:File.separator 获取属性信息的相关方法: 1)获取文件名:String getName() 2)获取文件大小:long length() 3)查看文件是否真实存在:boolean exists() 4)查看是否表示的是文件:boolean isFile() 5)查看是否表示的是目录:boolean isDirectory() 6)以下三个方法判断文件目录是否:可写,可读,可运行 file.canWrite(); file.canRead(); file.canExecute(); 是否为隐藏文件:file.isHidden(); 2.使用File创建一个新文件 ---->在当前项目根目录创建一个名为demo.txt的文件 若是在当前目录下,"./"是可以忽略不写的 File file = new File("demo.txt"); //若该文件不存在则创建 if(!file.exists()){ //创建文件 file.createNewFile(); System.out.println("创建完毕!"); } 方法: 1)使用File删除一个文件file.delete(); 2)使用File创建一个目录file.mkdir(); 3)创建多级目录file.mkdirs(); --mkdirs()在创建当前目录的同时,将所有不存在的父目录一同创建 4)删除目录file.delete(); 若是删除目录,前提是该目录必须是一个空目录(目录没有任何内容),否则删 除不掉 3.File操作: 1)若File表示的是一个目录,我们可以获取该目录下的所有子项,子项无非还是文件目录。 /* * 获取当前项目根目录下的所有子项 */ File dir = new File("."); if(dir.isDirectory()){//判断文件表示的是否是目录 /* *方法: * File[] listFiles() * 该方法会获取当前目录下的所有子项,每一个子项无非还是文件目录,所 以,可以用若干File对象表示每一个子项,最终将他们存入一个数组返回。 */ File[] subs = dir.listFiles(); for(File sub : subs){ if(sub.isFile()){ System.out.println("文件:"+sub.getName()); }else{ System.out.println("目录:"+sub.getName()); } } } 2)FileFilter:文件过滤器 使用文件过滤器来获取一个目录下满足条件的部分子项。是一个接口,本身不能实例化,我们需要定义一个实现该接口,并重写其定义的accept方法来定义过滤规则。 accept方法用于定义过滤要求,当给定的file对象满足要求就返回true即可。 重载的listFiles方法: 要求我们传入一个文件过滤器,然后该方法会将当前目录下的所有子项顺序的传递给过滤器的accept方法,只将返回为true的子项保留,最终存入一个数组并返回。eg:File[] subs = dir.listFiles(filter);---->filter为过滤器 3)删除多级目录: 由于一个目录可能含有子项。所以要删除当前这个目录必须先将其所有子项删除才 可以。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值