Java——IO流的学习【一】 之 File类

一、File类的构造函数(三种)

1)File(File parent , String child)

2)File(String pathname)

3)File(String parent,String child)

二、File类的获取(即File类的常用方法)

返回类型方法解释
StringgetAbsolutePath()返回此抽象路径名的绝对路径名字字符串
StringgetName()返回由此抽象路径名表示的文件或目录的名称
StringgetPath()将此抽象路径转换为一个路径名称字符串,即文件名字符串
longlength()返回此抽象路径名表示的文件的长度

三、文件和文件夹的创建删除等操作

返回类型方法解释
booleancreateNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时,
不可分地创建一个新的空文件。
booleandelete()删除此抽象路径名表示的文件或者目录/注意直接删除,不是回收站
booleanexists()测试此抽象路径名表示的文件时否存在
booleanisDirectory()测试此抽象路径名表示的是否是一个目录
booleanisFile()测试此抽象路径名表示的是否是一个标准文件
booleanmkdir()创建此抽象路径名指定的目录

四、ListFiles()方法介绍

返回类型方法解释
String[]list()返回一个字符串数组,这些字符串指定此抽象路
径名表示的目录的文件和目录
File[]listFiles()返回一个抽象路径名数组,这些路径名表示此抽象
路径名表示的目录中的文件
注意:在获取指定目录下的文件或者文件夹时必须满足下面的两个条件

1、指定的目录必须是存在的

2、指定的必须是目录。否则容易引发返回数组为null,出现NullPointException

五、文件过滤器

   File[]             listFiles(FilenameFilter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的
目录中满足指定过滤器的文件和目录
接口    FilenameFilter   实现此接口的类实例可用于过滤器文件名

需要实现的方法是 accept(File dir,String name) 返回类型boolean

解释:用来测试指定文件是否包含在某一文件列表中

public class FileDemo{
   public static void main(String[] args){
     File file = new File("A:\\code\\abc");
     File[] files = file.listFiles(new MyFileFilter());
     for( File f : files){
       System.out.println(f); 
     }
  }
}

class MyFileFilter implements FilenameFilter{
    public boolean accept(File dir,String name){
        return name.endsWith(".java");

    }
}

除了上面的文件过滤方式,还有一个listFiles(FileFilter filter) 根据抽象路径名表示的目录中满足指定过滤器的文件和目录

需要重写的方法accept(File pahtname)

public class FileDemo2 {
	public static void main(String[] args) {
		//获取扩展名为.java所有文件
		//创建File对象
		File file = new File("E:\\code\\day11_code");
		//获取指定目录下的文件夹
		File[] files = file.listFiles(new FileFileterByDir());
		//遍历获取到的所有符合条件的文件
		for (File f : files) {
			System.out.println(f);
		}
	}
}
//文件过滤器
class FileFileterByDir implements FileFilter{
	public boolean accept(File pathname) {
		return pathname.isDirectory();
	}
}


六、递归

问题:搜索指定目录中.java文件(含子目录)

需求:打印指定目录即所有子目录中的.java文件的文件路径

要求:编写一个方法用来打印指定目录中的.java文件路径,并进行方法的调用

若指定的目录有子目录,那么把子目录中的.java文件路径也打印出来

步骤:

1. 指定要打印的目录File对象

2. 调用getFileAll()方法,传入要打印的目录File对象

     2.1 通过FilenameFilter过滤器获取指定目录中的所有.java类型的File对象

     2.2 遍历得到每一个File对象

     2.3 判断当前File对象是否是目录

           判断结果为true,说明为目录,通过递归,再次调用步骤2的getFileAll()方法

           判断结果为false,说明是文件,打印文件的路径


public class FileDemo4 {
	public static void main(String[] args) {
		File file = new File("d:\\test");
		getFileAll(file);
	}
	//获取指定目录以及子目录中的所有的文件
	public static void getFileAll(File file) {
		File[] files = file.listFiles(MyFileFilter());
		//遍历当前目录下的所有文件和文件夹
		for (File f : files) {
			//判断当前遍历到的是否为目录
			if(f.isDirectory()){
				//是目录,继续获取这个目录下的所有文件和文件夹
				getFileAll(f);
			}else{
				//不是目录,说明当前f就是文件,那么就打印出来
				System.out.println(f);
			}
		}
	}
}
//定义类实现文件名称FilenameFilter过滤器
class MyFileFilter implements FilenameFilter{
	public boolean accept(File dir, String name) {
		return name.endsWith(".java");
	}
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值