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