File
当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。
当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。
因此我们把这种输入和输出动作称为IO操作。
//相对路径:相对本工程的路径
File file=new File("src");
//获取绝对路径
file.getAbsolutePath();
//获取文件夹名
file.getName();
//获取该文件的字符串路径
file.getPath();
//获取这文件夹的长度
file.length();
新建文件:
//1.不能创建同名文件
//2.不能创建文件夹
File file=new File("D:\\text\\c.JaVa");
file.createNewFile();//返回一个布尔值,判断是否创建成功
创建文件夹:
file.mkdir();
创建多级文件夹
file.mkdirs();
//判断该File指定的文件或文件夹是否存在
file.exists();
//判断该File指定的文件或文件夹是否是文件夹(目录)
file.isDirectory();
//判断该File指定的文件或文件夹是否是是文件
file.isFile();
//删除文件或文件夹
file.delete();
File.pathSeparator 路径分隔符
Windows系统 ; Linux系统 :
listFiles()方法
list() 返回一个字符数串组,为指定路径中的文件名
listFiles() 返回一个所有路径名的File[]
注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
文件过滤器
listFiles(FileFilter filter)重载方法:返回路径名File[],并且符合括号中指定过滤的文件和目录
FileFilter 接口
方法:accept(File pathname);测试指定路径名是否包含在指定文件中,accept方法接受一个参数,这个参数就当前文件或文件夹对象
返回值 boolean
需要自定义类接受FileFilter接口
列: File file=new File("D:\\text");
File[] files=file.listFiles(new MyFileFilter());
for(File f:files){
System.out.println(f);
}
public class MyFileFilter implements FileFilter{
public boolean accept(File pathname){
return pathname.getName().toLowerCase().endsWith(".java");
}
}
getName()获取文件名,toLowerCase(),大写转为小写,endsWith(".java");判断以什么结尾(“.java”);
递归
递归,指在当前方法内调用自己的这种现象
注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
递归打印指定文件下的所有子目录:
File file=new File(“D:\\text”);
public static void geta(File file){
File[] files=file.listFiles(new My());
for(File f:files){
if(f.isDirectory()){//判断如果是文件夹就继续调用
geta(f);
}
if(f.isFile()){//判断是文件 打印
System.out.println(f);
}
}
}
public class My implements FileFilter{
public boolean My(File pathname){
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
}