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

news2025/2/22 16:32:37

目录

题目:*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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2146533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka 安全机制详解及配置指南

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

毕业设计选题:基于ssm+vue+uniapp的面向企事业单位的项目申报小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

VisionPro - 基础 - 00 模板匹配技术和在VP中的使用 - PMAlign - PatMax - (2)

前言&#xff1a; 针对PatMax 的高级应用和原理&#xff0c;在这一节进行说明&#xff1a; PatMax Patterns When you train PatMax you specify a region of interest in an image or provide a description of a shape that includes the features you want to train. If yo…

一个无聊的网页(无服务器实现网页在线人数统计)

项目简介 一个无聊且没有任何意义的网页… 无聊的时候打开这个网页&#xff0c;然后可以和这个小黄脸玩趣 &#xff08;当你的鼠标到他面前&#xff0c;他会死死盯住你的鼠标&#xff0c;手机也可以用手指代替鼠标 &#xff09; 你可以看到有多少人和你样无聊 打开方式 sil…

Centos7-rpm包管理器方式安装MySQL 5.7.25

前言 本文用于学习通过Mysql压缩包在centos7中安装和配置的过程以及过程中碰到的Bug解决。 Mysql安装包下载和上传 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/访问Mysql官方下载站&#xff0c;选择对应的…

跟《经济学人》学英文:2024年09月14日这期 “The Perfect Couple” and the new map of Moneyland

“The Perfect Couple” and the new map of Moneyland Depictions of the super-rich on screen reflect the times 原文&#xff1a; FIRST, pick an approachable avatar. In “The Perfect Couple”, a glitzy new drama on Netflix, this role is played by Amelia (Ev…

【Python】探索 PluginBase:Python 插件系统的灵活构建

我承认这道菜有赌的成分&#xff0c;果然还是赌输了。 在现代软件开发中&#xff0c;插件系统为应用程序提供了极大的灵活性和扩展性。Python&#xff0c;作为一种流行的编程语言&#xff0c;拥有丰富的库和框架来支持插件的开发。今天&#xff0c;我们将深入探讨一个名为Plug…

股指期货理论价格计算公式是什么?

股指期货&#xff0c;作为金融衍生品的一种&#xff0c;其价格与现货市场的股指价格紧密相关&#xff0c;但又受到多种因素的影响。了解股指期货理论价格的计算公式&#xff0c;对于投资者进行套利交易、风险管理等具有重要意义。本文将详细解读股指期货理论价格的计算公式&…

【Java宝典】——二维数组的寻宝之旅

二维数组 二维数组的创建和打印 数据类型[ ] [ ] 数组名称 new 数据类型[行数][列数]{初始化数据}&#xff1b; import java.util.Arrays;public class DyadicArray {// 二维数组的创建和打印public static void main(String[] args) {// 直接初始化一个二维数组&#xff…

openssl 生成多域名 多IP 的数字证书

openssl.cnf 文件内容&#xff1a; [req] default_bits 2048 distinguished_name req_distinguished_name copy_extensions copy req_extensions req_ext x509_extensions v3_req prompt no [req_distinguished_name] countryName CN stateOrProvinceName GuangDong l…

Oracle VM VirtualBox仅主机(Host-0nly)网络实现外网连接

目录 1.仅主机(Host-0nly)网络介绍 1.操作步骤 2.测试​编辑 “如果您在解决类似问题时也遇到了困难&#xff0c;希望我的 经验分享 对您有所帮助。如果您有任何疑问或者想分享您的经历&#xff0c;欢迎在评论区留言&#xff0c;我们可以一起探讨解决方案。祝您在编程路上顺利…

通过多模态关系图学习实现可解释的医学图像视觉问答|文献速递--Transformer架构在医学影像分析中的应用

Title 题目 Interpretable medical image Visual Question Answering via multi-modal relationship graph learning 通过多模态关系图学习实现可解释的医学图像视觉问答。 01 文献速递介绍 医学视觉问答&#xff08;VQA&#xff09;是医学多模态大语言模型&#xff08;LL…

通信工程学习:什么是OLT光线路终端

OLT&#xff1a;光线路终端 OLT&#xff08;Optical Line Terminal&#xff0c;光线路终端&#xff09;是光纤通信系统中的核心局端设备&#xff0c;特别是在无源光网络&#xff08;Passive Optical Network, PON&#xff09;架构中扮演着至关重要的角色。以下是关于OLT光线路终…

GUI编程15:JPanel、JScroll 面板

视频链接&#xff1a;17、文本域JScroll面板_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p17&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.JPanel package com.yundait.lesson05;import javax.swing.*; import java.awt.*;public class JPanelDem…

C++速通LeetCode中等第5题-无重复字符的最长字串

字串substr法&#xff0c;定义字串的头部和长度&#xff0c;和字串后一位对比&#xff0c;如果不存在重复元素则长度1&#xff0c;存在重复元素则头部更新&#xff0c;长度重置。 class Solution { public:int lengthOfLongestSubstring(string s) {string s2;//存放s的前一部分…

基于虚拟阻抗的逆变器下垂控制环流抑制策略MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 由于微电网的弱电网特性&#xff0c;变流器并网线路较大的阻感比会导致变流器输出功率不能近似解耦&#xff0c;从而影响其下垂控制的精度。另外变流器并网线路阻抗的不确定性还会导致变流器之间分…

放过自己,决绝内耗

其实真正折磨你的&#xff0c;从来不是任何人的绝情&#xff0c;也不是糟糕的事情&#xff0c;而是你心存幻想的期待和无法控制的想象力&#xff0c;很多时候&#xff0c;你不是过不去生活的那道坎&#xff0c;而是过不了你心里的那一关&#xff0c;世间万物都在治愈你&#xf…

深入探究 Flask 的应用和请求上下文

目标 读完本文后&#xff0c;您应该能够解释&#xff1a; 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时&#xff0c;处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…

『功能项目』第三职业弓弩的平A【58】

我们打开上一篇57第二职业法师的平A的项目&#xff0c; 本章要做的事情是实现第三职业弓弩的平A伤害 首先修改脚本&#xff1a;MagicBall.cs 将脚本挂载在Sphere预制体身上 注意组件设置 运行项目 本章做了第三职业弓弩的平A伤害及显示伤害UI 接下来文章的内容&#xff1a; …

【深度学习】(1)--神经网络

文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果&#xff0c;我们可以知道&#xff0c;在学习深度学…