问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java怎么遍历一个盘下的所有文件

发布网友 发布时间:2022-05-05 17:46

我来回答

1个回答

热心网友 时间:2022-06-27 21:05

用递归算法,递归可以理解成自己调用自己,但要有终止条件

首先是判断这个是文件还是文件夹。文件的话就处理文件;文件夹的话,列出里面的文件,再对每一个文件做同样的判断处理

下面是删除一个文件夹(改成列出所有文件的话,你把删除操作改成放入集合操作),所有删除都是只能删除一个文件或者是空文件夹,所以遇到文件夹就得把里面的文件全部删除

private static void deleteFile(File file) {
if (!file.exists())
return;
System.out.print("删除===");
if (file.isFile()) {
System.out.println("文件:" + file);
file.delete();
} else {
System.out.println("文件夹:" + file);
for (File f : file.listFiles()) {
deleteFile(f);
}
file.delete();
}
}

同理(Node是自己定义的类,主要包含了name(String),children (List<Node>)这两个属性来表达层级):

遍历了这个文件夹之后返回这个文件夹的Node作为上一个文件加的children之一,这就把文件夹的层级结构列出来了,当然你也可以用Map来存储这些数据

          /**
 * 列出文件目录结构
 * 
 * @param folder
 * @param fnf
 * @return
 */
private static Node lsFiles(File folder) {
Node n = new Node();
n.setName(folder.getName());
n.setPath(folder.getAbsolutePath());
if (folder.isFile()) {
n.setLeaf(true);
n.setSize(folder.length());
} else {
n.setLeaf(false);
File[] folders = folder.listFiles();//列出文件夹底下的文件
for (File file : folders) {//遍历每个文件做相同操作
Node cn = lsFiles(file);
n.getChildren().add(cn);
n.setSize(n.getSize() + cn.getSize());
}
}

return n;
}

下面是不分层次结构来列出所有文件(纯手写,可能有语法错误)

          /**
 * 列出文件路径
 * 
 * @param folder
 * @param fnf
 * @return
 */
private static List<String> lsFiles(File folder) {
 List<String> l=new ArrayList<String>();
 l.add(folder.getAbsolutePath());
if (folder.isFile()) {
//处理file
} else {
File[] folders = folder.listFiles();
for (File file : folders) {
l.addAll(lsFiles(file));
}
}
return l;
}

效果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小鹏交付怎么评分 2024年5月趋乾黄道吉日 2024年5月哪天适合趋乾 2024年6月词讼黄道吉日 2024年6月哪天适合词讼 2024年8月成服黄道吉日 2024年8月哪天适合成服 2024年8月26日黄道吉日 百度识图在线识别这个人是 百度怎样识别明星是谁? 海绵城市都建什么 包钢股票前景如何 600010包钢股份这支股票我现在被套百分之六了,后市该怎么操作,适合做长 ... 创新科技产品认证如何办理 java怎样在页面遍历list并排序 五星酒店应有五星服务。 java iterator循环遍历集合(比如HashSet)的原理 在java中集合的遍历是怎样遍历的 冬季,在一个五星级酒店可以给客人什么样的超前服务? JAVA Set Iterator遍历的顺序是怎么样的? 五星级酒店有什么不被发现的免费服务? 本命星盘看哪些女生天生福气深厚 java 关于set集合遍历的问题。我打印不出学生信息怎么办?? 求一部小说,广告里看到的,说重生在即将过门的毁容王妃身上,而且王爷病重,还好她前世是毒医 Java:迭代器遍历Set集合 java中遍历SET 三星四星五星级酒店有些什么康乐服务 求高手看本命星盘相位,分析个性以及命理~! 谁能帮忙看一下我的本命星盘啊?网上测了一个,但是看不懂,跪求大神帮忙解释下,谢谢 急求外贸纺织公司的实习周记,需要多份 想要关于报关报检方面的 本命星盘 笔记本是dell inspiron 操作系统是win7 复制后clipbrd没内容 不能复制粘贴 五星级酒店特色服务项目有哪几种? Java创建list和set 添加元素,遍历集合怎么做 java 如何反射 如何遍历 entity 中的 get 值并 set 值 JAVA编程题 HashSet存储任意三个字符串,并遍历(增强for遍历) java 语言里 遍历 collection 的方式 是怎样? 灵芝有什么功效?怎么吃作用大?泡水喝能加蜂蜜吗?它跟人参比,哪个对缓解疲劳更有作用? 睡觉爱做梦喝人参灵芝泡水好么? 人参,灵芝,枸杞泡酒或炮泡水的功效 灵芝和田七在和和人参磨碎一起泡茶喝可以吗 手机充电器放电怎么维修 潘长江为什么突然破产了?他应该是很有钱的呀?他发生了什么事?他女儿情况又怎么样? 潘长江事件连累到女儿被骂,潘阳也牵连其中,发生了什么? 关于2014年下半年天津教师资格证的报考条件 Win7下安装Oracle11g报错 8人英语配音电影 6人的英语配音 闲鱼上那些被赞数99+,留言数99+,是怎么做到的 蜱虫最有肯在家的哪里产卵 卫生间地面或墙上冒出蜱虫,蜱虫是怎样繁殖的?怎样灭干净? 咸鱼上面99的香奈儿香奈儿嘉伯丽尔香水是真的吗 狗狗身上长了蜱虫,家里会不会有虫卵