大数据之Java基础(十九):IO流---1

一、File类

1.概念
File文件和目录的抽象表现形式

2.构造函数

3.常用方法

注意:
  • creatNewFile:仅用于创建文件,而且文件所在根目录必须是存在的,不然会报错
  • mkdir:创建指定的目录,但是待创建的目录前一层级目录结构必须是已经存在的,不然创建不成功,所以,建议使用mkdirs,创建全路径,不管存在不存在

4.特殊方法
  • listFiles() 返回file封装路径下的所有子文件和文件夹的File对象 ,是全路径
  • list() 返回file封装路径下的所有子文件和文件夹的String对象,仅有名称,非全路径

5.文件过滤器
  • listFiles() 的重载形式,接受指定的过滤器

  • 构造过滤器
class MyFileFilter implements FilenameFilter
{

	@Override
	public boolean accept(File dir, String name) {
		System.out.println(dir);	//打印的是文件或者文件夹所在的根目录路径
		System.out.println(name);	//打印的是文件的名字,仅仅是名字带后缀	
		return name.endsWith(".doc");//这里是筛选条件,返回true表示符合条件			
	}
}


class MyFilter implements FileFilter
{

	@Override
	public boolean accept(File pathname) {
		
		System.out.println(pathname);	//这里是带过滤文件的File的封装类,全路径

		return pathname.toString().endsWith(".doc");//这里是筛选条件,返回true表示符合条件	
	}
	
}



  • 使用过滤器
public static void func3()
{
	File file = new File("D:\\Downloads\\BDYDownloads");
	for (File str : file.listFiles(new MyFilter())) {
		System.out.println(str);
	}		
}




二、递归

1.概念
指在当前方法中调用自己

2.练习

/*
	 * 1.递归打印所有子目录中的文件路径
	 */
	public static void OnPrintAllFiles(String path)
	{
		
		//1.创建File对象
		File file = new File(path);
		ArrayList<File> fileArray = new ArrayList<File>();
		
		//2.得到file所有的子文件或者文件夹
		File [] fls = file.listFiles();
		for (int i = 0; i < fls.length; i++) {
			//3.如果是文件夹,继续查找子文件
			if(fls[i].isDirectory())
			{
				OnPrintAllFiles(fls[i].toString());
			}
			//4.如果是文件,放入fileArray
			else
			{
				fileArray.add(fls[i]);
			}
		}	
		for (File file2 : fileArray) {
			System.out.println(file2);
		}
	}


/*
	 * 2.打印指定目录即所有子目录中的.java文件的文件路径
	 */
	public static void OnPrintAllFilterFiles(String path) {
		// 1.创建File对象
		File file = new File(path);
		ArrayList<File> fileArray = new ArrayList<File>();

		// 2.得到file所有的子文件或者文件夹
		File[] fls = file.listFiles();
		for (int i = 0; i < fls.length; i++) {
			
			// 3.如果是文件夹,继续查找子文件
			if (fls[i].isDirectory()) {				
				OnPrintAllFilterFiles(fls[i].toString());
			}
			// 4.如果是文件,判断是否是.java结尾,如果是,放入fileArray
			else {				
				if(fls[i].toString().endsWith(".java"))
				fileArray.add(fls[i]);
			}
		}
		for (File file2 : fileArray) {
			System.out.println(file2);
		}
	}



3.注意事项
  • 要有出口,否则就是死递归
  • 递归的次数不能太多,不然会内存溢出


全文完!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值