java获取文件夹中所有文件

  • Post author:
  • Post category:java





前言

文章记录了java获取指定文件夹所有文件的方法,其中用到的工具类

StringUtils

源自

org.apache.commons.lang

,其maven引用如下:

        <!--  long3  -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>



一、不包含文件夹


	/**
	 *  <h1>获取指定文件夹下所有文件,不含文件夹</h1>
	 * @param dirFilePath 文件夹路径
	 * @return
	 */
	public static List<File> getAllFile(String dirFilePath){
		if(StringUtils.isBlank(dirFilePath))
			return null;
		return getAllFile(new File(dirFilePath));
	}
	
	/**
	 *  <h1>获取指定文件夹下所有文件,不含文件夹</h1>
	 * @param dirFile 文件夹
	 * @return
	 */
	public static List<File> getAllFile(File dirFile){
		// 如果文件夹不存在或着不是文件夹,则返回 null
		if(Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) 
			return null;
		
		File[] childrenFiles =  dirFile.listFiles();
		if(Objects.isNull(childrenFiles) || childrenFiles.length == 0) 
			return null;

		List<File> files = new ArrayList<>();
		for(File childFile : childrenFiles) {
			
			// 如果时文件,直接添加到结果集合
			if(childFile.isFile()) {
				files.add(childFile);
			}else {
				// 如果是文件夹,则将其内部文件添加进结果集合
				List<File> cFiles =  getAllFile(childFile);
				if(Objects.isNull(cFiles) || cFiles.isEmpty()) continue;
				files.addAll(cFiles);
			}
			
		}
		
		return files;
	}



二、包含文件夹

一中的代码是不包含文件夹的,若要包含文件夹,很容易修改一得到。


	/**
	 *  <h1>获取指定文件夹下所有文件,含文件夹</h1>
	 * @param dirFilePath 文件夹路径
	 * @return
	 */
	public static List<File> getAllFile(String dirFilePath){
		if(StringUtils.isBlank(dirFilePath))
			return null;
		return getAllFile(new File(dirFilePath));
	}
	
	/**
	 *  <h1>获取指定文件夹下所有文件,不含文件夹</h1>
	 * @param dirFile 文件夹
	 * @return
	 */
	public static List<File> getAllFile(File dirFile){
		// 如果文件夹不存在或着不是文件夹,则返回 null
		if(Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) 
			return null;
		
		File[] childrenFiles =  dirFile.listFiles();
		if(Objects.isNull(childrenFiles) || childrenFiles.length == 0) 
			return null;

		List<File> files = new ArrayList<>();
		for(File childFile : childrenFiles) {
			
			// 如果时文件,直接添加到结果集合
			if(childFile.isFile()) {
				files.add(childFile);
			}else {
				// 如果是文件夹。则先将其添加到结果集合,再将其内部文件添加进结果集合。
				files.addAll(childFile); 
				List<File> cFiles =  getAllFile(childFile);
				if(Objects.isNull(cFiles) || cFiles.isEmpty()) continue;
				files.addAll(cFiles);
			}
			
		}
		
		return files;
	}



总结


本文介绍了java获取文件夹中所有文件,记录了不包含文件夹和包含文件夹两需求的方法。其中大部分代码相同,如若采用,请根据需要自行重构。



版权声明:本文为m0_47406832原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。