摘要:本文主要向大家介绍了用Java语言读取其下所有文件夹与文件路径的方法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了用Java语言读取其下所有文件夹与文件路径的方法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
Java读取其下所有文件夹与文件的路径,具体内容如下
如果在f:\aa文件夹中,有如下图的文件夹与文件:
那么,在Java中,则如此读取f:/aa下的所有文件路径:
1、首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包:
import java.io.*;
import java.util.*;
复制代码
2、方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径。由于盘符下含有一些系统文件,拒绝访问,因为读取盘符,可能会出现空指针异常。
//这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组
//由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归
public static ArrayList
ArrayList
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
复制代码
然后方法如下:
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
// 这里是仅仅查询当前路径下的所有文件夹、文件并且存放其路径到文件数组
// 由于遇到文件夹不查询其包含所有子文件夹、文件,因此没必要用到递归
public static ArrayList
ArrayList
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);
}
}
希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!
擅长针对企业软件开发的产品设计及开发的细节与流程设计课程内容。座右铭:大道至简!
已有23人表明态度,87%喜欢该老师!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号