当须要把内存中的数据存储到持久化设备上这个动做称为输出(写)Output操做。java
当把持久设备上的数据读取到内存中的这个动做称为输入(读)Input操做。数组
所以咱们把这种输入和输出动做称为IO操做。测试
//相对路径:相对本工程的路径spa
File file=new File("src");对象
//获取绝对路径递归
file.getAbsolutePath();接口
//获取文件夹名内存
file.getName();字符串
//获取该文件的字符串路径get
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");
}
}