File类的功能
1、能够完成用户的对于文件或文件夹的操作需求
2、能够辅助其他的io流,完成对文件文件夹的操作
File类的构造方法
①File file = new File("file05")
②File file = new File("file05","t2.txt")
③File file1 = new File("file05"); FIle file2 = new File(file1 , "t2.txt");
④ URI uri = null
try{
uri = new URI("file:///User/lanou/Desktop/test");
}catch(exception e){
e.printStackTrace;
}
File file = new File( uri );
下面几种地址符号的含义
"/":代表从硬盘根目录开始查找文件
"./":代表从当前项目根目录查找文件
"../":代表从上一级文件查找文件
File类的一些常用的方法
File file = new File("./src/HelloWorld")
①存在 boolean a = file.exists()
②大小 long a = file.length()
③空间 long a = file.getTotalSpace() long a = file.getFreeSpace() long a = file.getUsableSpace()
④判断 boolean b = file.isDirectory() boolean b = file.isFile() boolean b = file.isHidden()
⑤自身
1、String s = file.getName()
2、String s = file.getPath()
3、String s = file.getAbsolutePath()
4、String s = file.getParent() File file1 = file.getParentFile()
File类中如何建立文件、文件夹、多层文件夹?
注意:建立文件文件夹都是基于能够建立(调用方法者是对象),目标文件不存在的情况
建立文件:
File file = new File("./src","HelloWorld.txt")
boolean b = file.createNewFile()
建立文件夹(分有无后缀):
File file1 = new File("./src","HelloWorld")
File file2 = new File("./src" , "HelloWorld.txt")
boolean b = file1. mkdir()
boolean b = file2.mkdir()
建立多层文件夹:
成功要素:
1、可以建立多层文件夹
2、目标文件不存在
3、有父级文件夹
代码示例:
File file = new File("./src" , "a/b/c")
boolean b = file.mkdirs
mkdirs的具体实现方法
分析:使用递归的思想
代码示例:
public static boolean makeDirectorys(File file){
if(file.exists){
return false;
}
makeDirectorys(file.getParentFile);
return file.mkdir();
}
使用递归的方法遍历文件夹下所有文件名
代码示例:
public static void main (String [] args ){
String s = "./file04";
File target = new File(s);
System.out.print(target.exists());
}
private static void traverseTarget(File target){
if(target.isFile() || target.list()/length == 0){
return ;
}
for(File file : target){
Log.ROOT_LOG.info(file.getName() );
if(file.isDirectroy){
traverseTarget(file);
}
}
}
如何判断一个FIle文件夹为空?
分析:利用list的length
代码示例:
File file = new File("./file04");
if(file.list().length == 0){
}
利用队列的思想遍历文件夹,得到所有文件名
代码示例:
public static void main(String [] args){
String s = "./file04";
File file = new File(s);
}
private static Collection<File> traverseTaget(File file){
//安全性判断
if(file.isFile() || file.list().length == 0){
return ;
}
//用于存放结果
Collection<File> c = new ArrayList<>();
//用于充当队列
LinkedList<File> container = new LinkedList<>();
container.add(file);
while(!container.isEmpty){
File file1 = container.poll();
for( File file : file1.listFiles){
c.add(file);
if(file1.isDirectory()){
container.add(file1);
}
}
}
return c;
}
过滤器有哪些?
list(FileName);
listFiles(FileName)
listFiles(FileNameFilter)
过滤器使用的时候需要注意什么?
1、重写的accept方法的 File dir 和 String name 分别代表要过滤的文件和该文件下的一级目录所有文件的文件名
2、重写的accept方法中,true代表可以过滤、输出。false代表不掉被过滤、不被输出。
3、调用listFiles()的时候会发生回调,一级目录下有多少文件就会回调多少次
过滤具体实施的三种方法?
1、实现FilenameFilter接口,定义成员变量、构造方法,在accept方法中使用限定条件。在主函数中建立对象并在构造方法参数列表中加入。
代码实现:
class MyFilter implements FilenameFilter{
private static String s1 ;
public MyFilter(String s1){
this.s1 = s1;
}
public boolean accept(File dir,String name){
if(s1.endsWith(s1))
return true;
return false;
}
}
class Function{
public static void main(String [] args){
String s = "./file04";
File file = new File(s);
MyFilter m1 = new MyFiltetr(".java");
File [] array = file.listFiles(m1);
for(File file : array){
System.out.println(file.getName());
}
}
}
2、实现FilenameFilter接口,定义成员变量,set方法,建立对象后通过set方法设置成员变量的值
代码示例:
class MyFilter implements FilenameFilter{
private static String s1 ;
public void set(String s1){
this.s1 = s1;
}
public boolean accept(File dir,String name){
if(s1.endsWith(s1))
return true;
return false;
}
}
class Function{
public static void main(String [] args){
String s = "./file04";
File file = new File(s);
MyFilter m1 = new MyFiltetr();
m1.set(".java");
File [] array = file.listFiles(m1);
for(File file : array){
System.out.println(file.getName());
}
}
}
3、建立匿名对象实现类
代码示例:
class Function{
public static void main(String [] args){
String s = "./file04";
File file = new File(s);
File [] array = file.listFiles(new MyFilter(){
public boolean accept (File dir , String name){
if(name.endsWith(".java"))
return true;
return false;
}
});
for(File file : array){
System.out.println(file.getName());
}
}
}