java 获取指定目录下的所有文件

236 篇文章 0 订阅

java ,如何获取指定目录下的所有文件呢?

看代码:

/***
	 * 获取指定目录下的所有的文件(不包括文件夹),采用了递归
	 * 
	 * @param obj
	 * @return
	 */
	public static ArrayList<File> getListFiles(Object obj) {
		File directory = null;
		if (obj instanceof File) {
			directory = (File) obj;
		} else {
			directory = new File(obj.toString());
		}
		ArrayList<File> files = new ArrayList<File>();
		if (directory.isFile()) {
			files.add(directory);
			return files;
		} else if (directory.isDirectory()) {
			File[] fileArr = directory.listFiles();
			for (int i = 0; i < fileArr.length; i++) {
				File fileOne = fileArr[i];
				files.addAll(getListFiles(fileOne));
			}
		}
		return files;
	}

 说明:上述方法采用了递归,所以包含子目录下的子目录中的文件。。。

测试代码:

@Test
	public  void test_getListFiles(){
		ArrayList<File> files=FileUtils.getListFiles("d:\\Temp\\a\\a");
		SystemUtil.printFilesFilePath(files);
	}

 输出结果:

d:\Temp\a\a\divided\merged\oracle学习笔记.doc

d:\Temp\a\a\divided\oracle学习笔记.doc_1_3kldv

d:\Temp\a\a\divided\oracle学习笔记.doc_2_3kldv

d:\Temp\a\a\divided\oracle学习笔记.doc_3_3kldv

d:\Temp\a\a\oracle学习笔记.doc

 

过滤前缀(只是获取指定目录下的文件,没有递归):

/***
	 * 
	 * @param path
	 * @param prefixStr
	 *            :前缀名
	 * @return
	 */
	public static File[] getFilesByPathPrefix(File path, final String prefixStr) {
		File[] fileArr = path.listFiles(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				// System.out.println("prefixStr:"+prefixStr);
				if ((ValueWidget.isNullOrEmpty(prefixStr) || (dir.isDirectory() && name
						.startsWith(prefixStr)))) {
					return true;
				} else {
					return false;
				}
			}
		});
		return fileArr;

	}
/***
	 * 前缀名
	 * 
	 * @param pathStr
	 * @param prefixStr
	 * @return
	 */
	public static File[] getFilesByPathAndPrefix(String pathStr,
			final String prefixStr) {
		File path = new File(pathStr);
		return getFilesByPathPrefix(path, prefixStr);
	}

 

过滤后缀名(只是获取指定目录下的文件,没有递归):

/***
	 * 
	 * @param path
	 * @param prefixStr
	 *            :后缀名
	 * @return
	 */
	public static File[] getFilesByPathAndSuffix(File path,
			final String sufixStr) {
		File[] fileArr = path.listFiles(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				// System.out.println("prefixStr:"+prefixStr);
				if ((ValueWidget.isNullOrEmpty(sufixStr) || (dir.isDirectory() && name
						.endsWith(sufixStr)))) {
					return true;
				} else {
					return false;
				}
			}
		});
		return fileArr;

	}

/***
	 * 后缀名
	 * 
	 * @param pathStr
	 * @param sufixStr
	 * @return
	 */
	public static File[] getFilesByPathAndSuffix(String pathStr,
			final String sufixStr) {
		File path = new File(pathStr);
		return getFilesByPathAndSuffix(path, sufixStr);
	}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值