欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 获取指定目录下的所有文件 博客分类: Java WebJava 指定目录获取所有文件过滤文件递归查询文件 

程序员文章站 2024-02-24 19:46:40
...

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);
	}