File、递归

java.io.File类可以表示文件或者文件夹。

构造方法:

       public File(String path):参数代表文件或文件夹的路径。

       public File(String parent, String child):第一个参数代表父文件夹(字符串),第二个参数代表子文件夹或文件。

       public File(File parent, String child):第一个参数代表父文件夹(File对象),第二个参数代表子文件夹或文件。

获取的方法:

       public long length():获取文件的字节大小。

       public String getName():获取文件的简短名称,不包括父文件夹。

       public String getAbsolutePath():获取绝对路径。

       public String getPath():获取构造参数路径。

判断的方法:

       public boolean exists():判断文件或者文件夹是否存在。

       public boolean isFile():判断是不是一个文件。

       public boolean isDirectory():判断是不是一个文件夹。      

创建的方法:

       public boolean createNewFile():创建一个文件,返回是否成功。

       public boolean mkdir():创建单级文件夹。

       public boolean mkdirs():创建多级文件夹。

删除的方法:

       public boolean delete():删除文件或文件夹。

       注意:

       1. 删除了之后不会进入回收站的,所有要谨慎操作。

       2. 如果删除文件夹,那么必须保证文件夹是空的。(优先删除其中的内容之后,才能删除空文件夹)

列出的方法:

       public String[] list():获取所有的简短名称字符串们。

       public File[] listFiles():列出所有的File对象们。

       public File[] listFiles(FileFilter filter):参数代表文件过滤的规则。

       java.io.FileFilter接口当中唯一的抽象方法:

       boolean accept(File file):返回true代表要,返回false代表不要。

             

绝对路径:从Windows的盘符开始,一个完整的路径。

相对路径:相对于当前项目而言,一个简短路径。

 

递归(Recursion)

       概念:方法自己调用自己。

       注意:必须设置一个终止条件,否则将会发生StackOverflowError栈溢出错误。

       这个错误产生的原因是:无限进栈,导致栈内存不够用。

       通过代码递归列出文件夹深度多层级的所有内容:

  private static void show(File dir) {
              File[] files = dir.listFiles();
              for (File file : files) {
                     if (file.isFile()) {
                            System.out.println(file);
                     }
                     if (file.isDirectory()) {
                            // 如果是文件夹,那么递归调用当前方法show自己,但是要有一个终止条件。
                            show(file);
                     }
              }
       }

发表评论