快捷搜索: 王者荣耀 脱发

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获取文件夹中所有文件,记录了不包含文件夹和包含文件夹两需求的方法。其中大部分代码相同,如若采用,请根据需要自行重构。
经验分享 程序员 微信小程序 职场和发展