利用递归和循环遍历文件

/**
 * 要对文件进行遍历,就是遍历其中所有的文件及文件夹,可以用递归和循环两种方式进行遍历(递归比较简单)。
 * */
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()){
			//定义一个容器,用于存放文件夹
			LinkedListlist=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("该文件不存在!");
		}
	}
}


结果:

利用递归和循环遍历文件_第1张图片

你可能感兴趣的:(JAVA,JAVA学习历程)