Day10 File类.递归

1. File类:1>概述:对文件和目录(文件夹)的抽象表示形式;

                               可以创建文件/删除文件/获取文件/判断文件是否存在/遍历文件/获取文件大小;

                               file文件;directory目录(文件夹);path路径;

                 2>静态变量:<1>static String pathSeparator // 路径分隔符,表示为字符串;

                                       <2>static char pathSeparator // 路径分隔符;

                                       <3>static String separator // 默认名称分隔符,表示为字符串;

                                       <4>static char separator // 默认名称分隔符;

                 3>路径:文件名称不区分大小写;

                                <1>绝对路径:完整的路径     // C: / D: ... 开始;

                                <2>相对路径:简化路径,根目录相同,可以简化     // 123.txt ;

                 4>构造方法:有静态成员可以直接用类访问;

                                        // File(File parent,String child)

                                        // File(String pathname)

                                        //File(String parent,String child)

                                        // File(URI uri)

                 5>常用方法:<1>获取方法:publice String getAbsolutePath() //获取结对路径名字符串;

                                                               public String getPath() // file转换为路径名字字符串,toString方法调用的就是这个;

                                                               public String getName() //返回file的文件或目录名称;

                                                               public long length() //返回file表示的文件长度;

                                       <2>判断方法:public boolean exists() //判断构造方法的路径(绝对,相对都可验证)是否存在;

                                                               public boolean isDirectory() // 此File表示的是否为目录;

                                                               public boolean isFile() // 此File表示的是否为文件;

                                       <3>创建/删除方法:public boolean createNewFile() //在存在的路径下,创建之前不存在的新文件;

                                                                        // 路径不存在时,会抛出IOException的异常,需要用throws或try...catch处理;

                                                                       public boolean delete() //删除这个文件或目录(文件夹);

                                                                       public boolean mkdir() //创建单级目录(文件夹),不能创建文件,下同;

                                                                       public boolean mkdirs() // 创建单级或多级目录,包含必须但不存在的父目录;

                                       <4>遍历目录(文件夹)功能:list和listFiles遍历构造方法中的目录;

                                                                                   路径不存在或路径不是一个目录会抛出空指针异常;

                                                                                   public String[] list() // 返回String数组,File目录下所有的文件或目录;

                                                                                   public File[] lisrFiles() //返回File数组,File目录下所有的文件或目录;

2.递归:1>概念:<1>在当前方法中自己调用自己;调用方法时,方法主体不变,每次调用方法参数不同;

                            <2>分为直接递归(直接调用自己)和间接递归(通过A-B-C-A方法间接调用自己);

              2>注意:<1>要有条件限定,让递归能停下,且递归次数不能太多,否则都会造成栈内存溢出StackOverFlowError;

                             <2>构造方法不能递归;

              3>练习:

3.FileFilter过滤器:1>File[] listFiles(FileFilter filter) //过滤文件;pathname

                                        boolean accept(File dir,String name) // 测试文件是否在列表中;

                               2>File[] FilenameFilter(FileFilter filter) //过滤文件;dir

                                        boolean accept(File dir,String name) // 测试文件是否在列表中;

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java代码实现: ```java import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CreateFiles { public static void main(String[] args) throws IOException { String basePath = "./day19/task02"; List<Map<String, String>> fileList = new ArrayList<>(); Map<String, String> file1 = new HashMap<>(); file1.put("name", "File操作.avi"); file1.put("path", "./day19/task02/test01"); fileList.add(file1); Map<String, String> file2 = new HashMap<>(); file2.put("name", "File学习笔记.md"); file2.put("path", "./day19/task02/test01"); fileList.add(file2); Map<String, String> file3 = new HashMap<>(); file3.put("name", "任务作业.txt"); file3.put("path", "./day19/task02/test01"); fileList.add(file3); Map<String, String> file4 = new HashMap<>(); file4.put("name", "java学院-讲师上云-日期讲解.avi"); file4.put("path", "./day19/task02/test02"); fileList.add(file4); Map<String, String> file5 = new HashMap<>(); file5.put("name", "java学院-讲师上云-日期解析.avi"); file5.put("path", "./day19/task02/test02"); fileList.add(file5); Map<String, String> dir1 = new HashMap<>(); dir1.put("name", "test01"); dir1.put("path", "./day19/task02"); fileList.add(dir1); Map<String, String> dir2 = new HashMap<>(); dir2.put("name", "test02"); dir2.put("path", "./day19/task02"); fileList.add(dir2); Map<String, String> dir3 = new HashMap<>(); dir3.put("name", "task02"); dir3.put("path", "./day19"); fileList.add(dir3); for (Map<String, String> file : fileList) { String name = file.get("name"); String path = file.get("path"); File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } if (!name.contains(".")) { File subDir = new File(dir, name); subDir.mkdir(); } else { File subFile = new File(dir, name); subFile.createNewFile(); } } } } ``` 首先定义了一个basePath,即根目录的路径。然后创建了一个List,用于存储所有的文件和文件夹。 接下来添加了七个元素,其中五个是文件,两个是文件夹。每个元素都是以Map形式存储的,包含了元素的名称和路径。 接下来使用循环遍历所有的元素,先判断元素对应的目录是否存在,不存在则递归创建。然后判断元素是文件还是文件夹,如果是文件则创建文件,如果是文件夹则创建文件夹。 最终,执行代码后会在day19目录下创建task02目录,并在其中创建test01和test02两个子目录,以及相应的文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值