黑马程序员--Java基础学习笔记【文件操作、递归】

 

 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------    

 

文件操作

    文件和目录路径名的抽象表示形式。

成员变量

       StringpathSeparator= File.pathSeparator; // 路径分隔符

       System.out.println(pathSeparator); // ;

 

       Stringseparator= File.separator;// 默认名称分隔符

       System.out.println(separator); // \

构造方法

    public File(String pathname)

    public File(String parent, String child)

    public File(File parent, String child)

成员方法

    boolean createNewFile() // 创建新文件

    boolean mkdir() // 创建文件夹

    boolean mkdirs() // 创建多级目录

    boolean delete() // 删除文件/空文件夹

    boolean renameTo(File dest) // 重命名,有剪切功能

    boolean isDirectory() // 判断是不是路径

    boolean isFile() // 判断是不是文件

    boolean exits() // 判断文件/路径是否存在

    boolean canRead() // 判断是否可读

    boolean canWrite() // 判断是否可写

    boolean isHidden() // 判断是否隐藏

    String getAbsolutePath() // 获取绝对路径

    String getPath() // 获取路径

    File getParent() // 获取父路径

    String getName() // 获取文件名/文件夹名

    long length() // 获取文件字节数

    long lastModified() // 获取文件最后修改时间毫秒值

    String[] list() // 获取当前目录下文件名和文件夹名,返回字符串数组形式

String[]list(FilenameFilter filter) // 获取当前目录下满足过滤器条件的文件名和文件夹名,返回字符串数组形式

    File[] listFiles() // 获取当前目录下目录和文件,返回file对象数组形式

    File[] listFiles(FilenameFilter filter) // 获取当前目录下满足过滤器条件的目录和文件,返回file对象数组形式

    File[] listRoots() // 获取当前系统根

 

自定义文件过滤器的实现类

// 文件过滤器

class FileFilterImple implements FileFilter {

 

    @Override

    // 测试指定抽象路径名是否包含在pathname列表中

    publicboolean accept(File pathname) { // 传递抽象路径名

       // 获取文件名/文件夹名.全部转成小写.是否以指定字符结尾

       returnpathname.getName().toLowerCase().endsWith(".txt");

    }

 

}

 

斐波那契数列

 

package cn.itcast;

 

/*

 * 斐波那契数列的递归实现方式

 */

publicclassFibonacci {

 

    publicstaticvoid main(String[] args) {

       test1(12);

       System.out.println(test2(12));

       test3();

    }

 

    // 数组实现

    publicstaticvoid test1(intsize) {

       int[] arr = newint[size];

       arr[0] = arr[1] = 1;

       for (inti = 2; i < arr.length; i++) {

           arr[i] = arr[i - 1] + arr[i - 2];

       }

       System.out.println(arr[arr.length - 1]);

    }

 

    // 递归要有出口

    // 递归次数不能太多,否则内存溢出

    // 构造方法不能递归使用

    publicstaticint test2(inti) {

       if (i == 1) {

           return 1;

       }

       if (i == 2) {

           return 1;

       }

       return test2(i - 1) + test2(i - 2);

    }

    publicstaticvoid test3() {

       System.out.println("1个月的兔子对数:1");

       System.out.println("2个月的兔子对数:1");

       intf1 = 1, f2 = 1, f, M = 24;

       for (inti = 3; i <= M; i++) {

           f = f2;

           f2 = f1 + f2;

           f1 = f;

           System.out.println("" + i +"个月的兔子对数:" + f2);

       }

    }

}

 

递归遍历多级目录和删除空目录

package cn.itcast;

 

import java.io.File;

 

/*

 * 递归遍历多级目录和删除空目录

 */

publicclassFileAllDir {

 

    publicstaticvoid main(String[] args) {

       // getAllDir(newFile("C:\\Windows\\System32\\drivers\\etc\\"));

       getAllDir(new File("D:\\YY"));

    }

 

    // 递归遍历目录

    publicstaticvoid getAllDir(File dir) {

 

       // 获取目录下所有目录和文件

       File[]files= dir.listFiles();

       for (File file : files) {

           // 判断如果是目录,就继续遍历

           if (file.isDirectory()) {

              getAllDir(file);

           }else{

              // 不是目录,输出文件名

              // File类重写了toString()方法,输出该对象的全路径

              System.out.println(file);

           }

       }

 

    }

 

    // 递归删除目录

    publicstaticvoid deleteDir(File dir) {

       // 列出该路径下的所有目录和文件

       File[]files= dir.listFiles();

       for (File file : files) {

           // 判断如果是目录,继续调用本方法递归该目录

           if (file.isDirectory()) {

              deleteDir(file);

           }else{

              // 如果是文件,就直接删除

              file.delete();

           }

       }

       // 最后只剩空目录,直接删除

       dir.delete();

    }

}


你可能感兴趣的:(递归,文件操作)