ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IO/NIO — File递归

2021-11-11 11:00:32  阅读:105  来源: 互联网

标签:文件 遍历 NIO File 获取 IO 过滤器 目录


IO/NIO — File递归

File类在java.io`包下,可以在程序中操作文件和目录

File可以新建、删除、重名名文件和目录,但是不能访问文件内容,需要通过输入/输出流

一、File 相关方法

1、创建File对象
  • File(String c):以当前路径创建一个File对象
  • File(File p, String c):将File文件封装成File对象
2、File类的获取
  • getName():获取文件名
  • length():获取文件大小
  • getAbsoluteFile():获取绝对路径
  • getAbsoluteFile().getParent():获取上一级路径
  • getParent():获取相对路径的父路径
3、文件和文件夹的创建删除等
  • mkdir():创建指定目录
  • mkdirs():创建多层文件夹
  • createNewFile():创建一个新文件
  • delete():删除文件或目录
  • exists():判断文件或目录是否存在
  • isDirectory():判断是否为一个目录
  • isFile():判断是否为一个文件
4、文件目录遍历
  • list():返回一个字符串数组,每个字符串表示文件或者目录
  • listFiles():返回一个绝对路径名数组,表示目录中的文件

二、文件过滤器

当通过listFiles()方法,可以获取一个目录下所有的文件和文件夹,当想获得指定扩展名的文件时,可以通过文件过滤器

  • listFiles(FilenameFileter filter):返回符合过滤器要求的所有文件和文件夹
  • 使用:自定义过滤器继承 FilenameFileter 类,实现accept(File dir, String name)方法,该方法获得 File 的所有子目录或者文件

三、File 递归遍历实现

递归:在方法内能自己调自己

public class FileTest {
	public static void main(String[] args) {
         // 1.指定要打印的目录File对象
		File file = new File("D:\\test");
         // 2.获取指定目录以及子目录中的所有的txt文件
		getFileAll(file);
	}

	/** 获取指定目录以及子目录中的txt文件 */
	public static void getFileAll(File file) {
        // 通过自定义的文件过滤器获取符合要求数据
		File[] files = file.listFiles(MyFileFilter);
		for (File f : files) {
			//判断当前遍历到的是否为目录
			if(f.isDirectory()){
				// 是目录,继续遍历
				getFileAll(f);
			}else{
				// 是文件,打印
				System.out.println(f);
			}
		}
	}
    
	// 自定类继承FilenameFilter过滤器接口
	class MyFileFilter implements FilenameFilter{
		public boolean accept(File dir, String name) {
		return name.endsWith(".txt");
	}
}

标签:文件,遍历,NIO,File,获取,IO,过滤器,目录
来源: https://blog.csdn.net/tanghaixu/article/details/121263549

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有