【Java】读取其下所有文件夹与文件的路径

如果在f:\aa文件夹中,有如下图的文件夹与文件:

那么,在Java中,则如此读取f:/aa下的所有文件路径:

1、首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包:

import java.io.*;
import java.util.*;

2、方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径。由于盘符下含有一些系统文件,拒绝访问,因为读取盘符,可能会出现空指针异常。

//这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组
//由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归
public static ArrayList<String> Dir(File dirFile) throws Exception {
	ArrayList<String> dirStrArr = new ArrayList<String>();

	if (dirFile.exists()) {
		//直接取出利用listFiles()把当前路径下的所有文件夹、文件存放到一个文件数组
		File files[] = dirFile.listFiles();
		for (File file : files) {
			//如果传递过来的参数dirFile是以文件分隔符,也就是/或者\结尾,则如此构造
			if (dirFile.getPath().endsWith(File.separator)) {
				dirStrArr.add(dirFile.getPath() + file.getName());
			} else {
				//否则,如果没有文件分隔符,则补上一个文件分隔符,再加上文件名,才是路径
				dirStrArr.add(dirFile.getPath() + File.separator
						+ file.getName());
			}
		}
	}
	return dirStrArr;
}

其上的方法,是不读取f:\aa下的新建文件夹下的xlsx,如果在读取的过程中,遇到文件夹要同时读取其包含所有子文件夹、文件时,则要用到递归,先设置一个全局的动态数组:

public static ArrayList<String> dirAllStrArr = new ArrayList<String>();

然后方法如下:

public static void DirAll(File dirFile) throws Exception {

	if (dirFile.exists()) {
		File files[] = dirFile.listFiles();
		for (File file : files) {
			//如果遇到文件夹则递归调用。
			if (file.isDirectory()) {
				// 递归调用
				DirAll(file);
			} else {
				//如果遇到文件夹则放入数组
				if (dirFile.getPath().endsWith(File.separator)) {
					dirAllStrArr.add(dirFile.getPath() + file.getName());
				} else {
					dirAllStrArr.add(dirFile.getPath() + File.separator
							+ file.getName());
				}
			}
		}
	}
}

其实在读取的过程中,关键是利用listFiles()方法,获取本文件夹下的所有文件列表,之后和《【Java】移动文件夹及其所有子文件与子文件夹》(点击打开链接),《【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作》(点击打开链接)一样,遇到文件夹则进行递归。

上面整个方法的来起来是这样的一个java文件:

import java.io.*;
import java.util.*;

public class fileList {
	// 设置一个全局动态数组,来存放文件路径
	// 主要遍历文件夹,包含所有子文件夹、文件的情况时,用到递归,所以要这样设置
	public static ArrayList<String> dirAllStrArr = new ArrayList<String>();

	// 这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组
	// 由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归
	public static ArrayList<String> Dir(File dirFile) throws Exception {
		ArrayList<String> dirStrArr = new ArrayList<String>();

		if (dirFile.exists()) {
			// 直接取出利用listFiles()把当前路径下的所有文件夹、文件存放到一个文件数组
			File files[] = dirFile.listFiles();
			for (File file : files) {
				// 如果传递过来的参数dirFile是以文件分隔符,也就是/或者\结尾,则如此构造
				if (dirFile.getPath().endsWith(File.separator)) {
					dirStrArr.add(dirFile.getPath() + file.getName());
				} else {
					// 否则,如果没有文件分隔符,则补上一个文件分隔符,再加上文件名,才是路径
					dirStrArr.add(dirFile.getPath() + File.separator
							+ file.getName());
				}
			}
		}
		return dirStrArr;
	}

	public static void DirAll(File dirFile) throws Exception {

		if (dirFile.exists()) {
			File files[] = dirFile.listFiles();
			for (File file : files) {
				// 如果遇到文件夹则递归调用。
				if (file.isDirectory()) {
					// 递归调用
					DirAll(file);
				} else {
					// 如果遇到文件夹则放入数组
					if (dirFile.getPath().endsWith(File.separator)) {
						dirAllStrArr.add(dirFile.getPath() + file.getName());
					} else {
						dirAllStrArr.add(dirFile.getPath() + File.separator
								+ file.getName());
					}
				}
			}
		}
	}

	public static void main(String[] args) throws Exception {
		File dirFile = new File("f:/aa");
		System.out.println(Dir(dirFile));
		DirAll(dirFile);
		System.out.println(dirAllStrArr);
	}
}

运行结果如下:

时间: 2024-08-26 22:51:25

【Java】读取其下所有文件夹与文件的路径的相关文章

android开发步步为营之54:读取assets,raw文件夹下文件

一.读取assets文件下文件products.json public String readAssetFile(Context c, String file) { Elapsed profiler = new Elapsed(); BufferedReader bufReader = null; try { InputStreamReader inputReader = new InputStreamReader(c.getResources().getAssets().open(file))

JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。

package ioTest.io3; /* * 获取指定目录下的文件夹和文件的File对象或是字符串名称. * 也可以通过filter获取指定的文件夹或者指定类型的文件 * 这里面需要做一个总结,如何利用jdk的源码去理解不熟悉的方法的应用. */ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; public class FileDemo2 { public static void m

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

Java删除文件夹和文件

Java删除文件夹和文件 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1,验证传入路径是否为正确的路径名(Windows系统,其他系统未使用) Java代码 // 验证字符串是否为正确路径名的正则表达式 private static String matches = "[A-Za-z]:\\\\[^:?\"><*]*"; // 通过 sPath.matches(

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取)

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 分类: SharePoint2011-12-23 14:44 1584人阅读 评论(0) 收藏 举报 文档sharepointurl测试stringforms 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 1.在部署的sharepoint网站中新建一个名为“测试文档库”的文档库,并添加各级的子文件夹和子文件,用于测试 2.在VS2010中新建空

VBA读取文件夹下所有文件夹及文件内容,并以树形结构展示

Const TR_LEVEL_MARK = "+"Const TR_COL_INDEX = "A"Const TR_COL_LEVEL = "E"Const TR_COL_NAME = "C"Const TR_COL_COUNT = "D"Const TR_COL_TREE_START = "F"Const TR_ROW_HEIGHT = 23Const TR_COL_LINE_WIDT

JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件

******JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件****** package com.bo.test; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import

php中读取中文文件夹及文件报错

php读取时出现中文乱码 一般php输出中出现中文乱码我们可用 header ('content:text/html;charset="utf-8"'); php中读取中文文件夹及文件报错? 这就要用到iconv函数了 但php.5以下的版本好像要改php.ini这个配置文件 但我用的是php高版本所以可以直接用 iconv这个函数 用法: iconv('GB2312', 'UTF-8', $file); 但想要继续打开中文文件夹(二级中文目录),还是不行还是会报错, 我认为这应该是地

java打印出某一指定路径下的文件夹内的所有子文件夹和文件,并区分开来

public class printoutFile { public static void main(String[] args) { printFile(new File("D:\\test"),1); } public static void printFile(File file,int sub) { if (file.isFile()) { System.out.println("您给定的是一个文件"); // 判断给定目录是否是一个合法的目录,如果不是,