标签:文件操作 递归
------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();
}
}
本文出自 “听你流浪” 博客,请务必保留此出处http://zhanglianxin.blog.51cto.com/8312202/1698041
标签:文件操作 递归
原文地址:http://zhanglianxin.blog.51cto.com/8312202/1698041