利用递归和循环遍历文件

/**
 * 要对文件进行遍历,就是遍历其中所有的文件及文件夹,可以用递归和循环两种方式进行遍历(递归比较简单)。
 * */
package com.basic.exe;

import java.io.File;
import java.util.LinkedList;

public class BianLiFile {
	public static void main(String[] args) {
		showFileInfo1("E:\\Android学习笔记");
	}
	/**
	 * 思路:
	 * 拿到文件后,先判断该问价是否存在,如果不存在就不进行操作,如果文件存在,
	 * 就将该文件转变成文件数组,以便于对文件进行遍历。
	 * 拿到文件数组后,判断该文件是否为空,如果不为空,就判断该文件是否是文件夹,如果不是,就输出其路径或者名称,
	 * 如果该文件是文件夹,就输出该文件夹的路径或者名称,然后继续对此文件夹进行遍历,直到其不是文件夹。
	 * */
	public static void showFileInfo1(String path) {
		File file=new File(path);
		//判断文件是否存在
		if(file.exists()){
			//将文件转变成文件数组
			File files[]=file.listFiles();
			//判断文件是否为空
			if(files.length==0){
				System.out.println("该文件为空!");
			}
			for (File file2 : files) {
				//判断文件是否是文件夹
				if(file2.isDirectory()){
					System.out.println("文件夹:"+file.getAbsolutePath());
					showFileInfo1(file2.getAbsolutePath());
				}else{
					System.out.println("文件:"+file2.getAbsolutePath());
				}
			}
		}else{
			System.out.println("文件不存在!");
		}
	}
	/**
	 * 利用循环进行遍历
	 * 思路:
	 * 1、先将传入的字符串转变成文件,然后判断该文件是否存在。
	 * 2、将文件转变成文件数组,用于之后的而遍历,定义一个容器(集合),用于存放文件夹。
	 * 3、判断该文件是否是文件夹,如果是,就将其存放到集合中,如果不是,就打印其路径或者名称。
	 * 4、判断该文件夹是否被遍历了,如果已经被遍历了,就从集合中移除,若没有,就存入到集合中。
	 * 5、如果集合为空时,遍历结束。
	 * */
	public static void showFileInfo2(String path){
		//将字符串转变成文件
		File file=new File(path);
		//判断该文件是否存在
		if(file.exists()){
			//定义一个容器,用于存放文件夹
			LinkedList<File>list=new LinkedList<>();
			//将文件转变为文件数组
			File files[]=file.listFiles();
			//判断该文件是否为空
			if(files.length==0){
				System.out.println("该文件为空!");
			}
			//对文件数组进行遍历
			for (File file2 : files) {
				//判断文件是否是文件夹
				if(file2.isDirectory()){
					System.out.println("文件夹:"+file2.getAbsolutePath());
					list.add(file2);
				}else{
					System.out.println("文件:"+file2.getAbsolutePath());
				}
			}
			File nextFile=null;
			while(!list.isEmpty()){
				nextFile=list.removeFirst(); //移除并返回此列表的第一个元素
				files=nextFile.listFiles();
				for (File file2 : files) {
					if(file2.isDirectory()){
						System.out.println("文件夹:"+file2.getAbsolutePath());
						list.add(file2);
					}else{
						System.out.println("文件:"+file2.getAbsolutePath());
					}
				}
			}
		}else{
			System.out.println("该文件不存在!");
		}
	}
}


结果:


  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尚振伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值