首页 > 编程语言 >Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)

Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)

时间:2024-09-18 13:52:10浏览次数:15  
标签:练习题 18.28 遍历 Java file ArrayList File 目录 files

目录

题目:*18.28 (非递归目录大小)

习题思路

代码示例

输出结果


题目:*18.28 (非递归目录大小)

不使用递归改写程序清单18-7

  • 习题思路
  1. ( getSize方法)
    1. 创建一个变量表示总共的大小。
    2. 传入路径,创建File文件。
    3. 创建ArrayList<File>列表,并添加传入的文件。
    4. 如果列表不为空,则进入wile循环。
      1. 再新建一个ArrayList<File>存储子文件和目录
      2. 用for循环遍历每一个子文件/目录。
        1. 如果遍历元素是一个目录
          1. 遍历这个目录,如果遍历元素是文件则累加文件大小,如果是目录则添加到步骤4.1新建的目录中。
        2. 如果遍历元素是文件则累加文件大小。
      3. 将步骤4.1中的列表转移到步骤2的列表中(这个步骤要在while循环内)
  • 代码示例

编程练习题18_28NonRecursiveDirectorySize.java

package chapter_18;

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

public class 编程练习题18_28NonRecursiveDirectorySize {
	public static void main(String[] args) {
		System.out.print("Enter a directory or a file: ");
		Scanner input = new Scanner(System.in);
		String directory = input.nextLine().replaceAll("\\\\", "//");
		
		System.out.println(getSize(new File(directory)) + " bytes");
		input.close();
	}
	public static long getSize(File file) {
		long size = 0;
		ArrayList<File> files = new ArrayList<File>();
		files.add(file);
		while(!files.isEmpty()) {
			ArrayList<File> newList = new ArrayList<File>();
			for(File f : files) {
				if(f.isFile())
					size += f.length();
				else {
					File[] fileList = f.listFiles();
					if(file != null) {
						for(File f2:fileList){
							if(f2.isDirectory())
								newList.add(f2);
							else size += f2.length();
						}
					}
				}
			}
			files = newList;
		}
		return size;
	}

}
  •  输出结果
Enter a directory or a file: C:\Users\Lenovo\eclipse-workspace\JavaFX
21530663 bytes

标签:练习题,18.28,遍历,Java,file,ArrayList,File,目录,files
From: https://blog.csdn.net/2301_78998594/article/details/142331033

相关文章

  • 使用Java实现高效用户行为监控系统
    引言背景介绍:随着Web应用的日益复杂和用户体验成为产品成功的关键因素,用户行为监控(UserBehaviorMonitoring,UBM)变得越来越重要。UBM不仅帮助开发者理解用户如何与应用程序交互,还能用于性能优化、错误追踪、用户体验改进等方面。目标读者:本文面向Java开发者、系统架构师以及对用......
  • 解决ZBLOG网站运行中出现"JavaScript加载失败"问题
    当Z-Blog网站运行中出现“JavaScript加载失败”的问题时,可能的原因有几个方面,包括但不限于插件冲突、HTTPS配置问题、CDN问题等。以下是针对这些问题的一些解决方案:1.插件冲突问题描述:某些插件可能与Z-Blog核心或其他插件存在冲突,导致JavaScript无法正常加载。解决......
  • java-CC1 链条审计
    java-CC1链条审计CC1是CommonsCollections1的简称,它是ApacheCommonsCollections库中的一个已知的反序列化利用链。而这个库也是java中比较通用的库。在java语言里面有执行系统命令的Runtime类像php中的eval()、system()、exec()、shell_exec()、assert()、passt......
  • zblog提示“JavaScript加载失败”的原因和解决办法
    当您在使用Z-Blog时遇到“JavaScript加载失败”的提示,这通常表明浏览器在加载某个或某些JavaScript文件时遇到了问题。以下是一些可能的原因及相应的解决方法:1.浏览器版本过低问题描述:使用的浏览器版本过低,不支持某些JavaScript功能。解决方法:升级到最新版本的浏览......
  • 基于java手机游戏(堡垒)的设计与开发的计算机毕设源码+论文
    手机游戏(堡垒)的设计与开发摘要随着手机业务的迅速发展,手机游戏逐渐成为移动增值服务的兴奋点。本毕业设计就着眼于J2ME技术的应用,设计与开发一款探险类手机游戏(堡垒)。该堡垒游戏是基于J2ME开发的手机RPG游戏,采用midp2.0技术实现了菜单、地图、主角动作及怪物动作和AI等,主要通过精......