Java序谈之File类

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());
}
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值