文件遍历~递归

一、File类


1.概念:将操作系统中文件(目录)路径,封装成File类对象


2.构造方法


                //File(string pathName)
		File file=new File("e:\\a.txt");
		System.out.println(file);
		//File(string parent,string child)
		File file2=new File("e:","a.txt");
		System.out.println(file2);
		//File(File,string child)
		File file3=new File("e:");
		File file4=new File(file3,"a.txt");
		System.out.println(file4);

3.创建文件


                File file=new File("e:\\a.txt");
		boolean b=file.createNewFile();
		System.out.println(b);

创建文件夹


                File file=new File("e:\\abc\\b\\c\\d\\a.txt");
		boolean b=file.mkdirs();
		System.out.println(b);

4.返回文件或路径名


                //.getName()返回文件或文件名
		String str=file.getName();
		System.out.println(str);
		
		//.getPath()路径名为字符串
		String str2=file.getPath();
		System.out.println(str2);

5.遍历文件


file.fileLists()方法:遍历目录或文件路径


                File file=new File("F:\\2.专业课\\嵌入式");
		File[] fileArr=file.listFiles();
		for (File file2 : fileArr) {
			System.out.println(file2);
		}

file.list()方法:遍历文件名


                File file=new File("F:\\2.专业课\\嵌入式");
		String[] strArr=file.list();
		for (String string : strArr) {
			System.out.println(string);
		}

listRoots()方法:遍历系统中的根目录


                File[] list=File.listRoots();
		for (File file : list) {
			System.out.println(file);
		}

二、递归


递归:在当前方法内调用自己的这种现象,递归必须有返回值。


例子:计算5!,如果是1则返回;否则用i调用i*getQi(i-1)


       public static int getQi(int i){
		//如果为1则返回1
		if(i==1)
			return 1;
		//否则递归调用
		return i*getQi(i-1);
	}

三、File遍历+递归


例子:遍历文件夹中的文件,使用递归遍历不同层级的文件,不同层级可以表示出来


	private static void getPrint(File file,int level) {
		//每次打印文件名:\t*(层级数-1)+文件名
		System.out.println(getLevel(level)+file.getName());
		//打印完本根文件,就Level++,层级加深
		level++;
		File[] files=file.listFiles();
		for (File f : files) {
			//若是文件,每次遍历需要加深一层
			if(f.isFile()){
				System.out.println(getLevel(level)+f.getName());
			}else{
				getPrint(f,level);
			}
		}
	}

判断空格的函数:


        /*
	 * 判断空格数函数:不同层级之间需要有不同事务“\t”来区分,第一个层级是顶格的,第二个层级有一个\t,第三个有两个\t,依次类推
	 */
	public static String getLevel(int level){
		//第一个层级是顶格的,所以返回空
		if (level==1)
			return "";
		//定义常数\t
		String sum="\t";
		//需要累加返回的空格数
		String Sum="";
		for (int i = 1; i < level; i++) {
			Sum=Sum+sum;
		}
		return Sum;
	}

小结:


文件的遍历其实就是遍历文件路径,然后如果是文件夹则循环调用,如果是文件则直接打印。递归是一个比较难的点,需要沉下心来一点点理解,一旦理解后其他的就容易了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值