GDPU Java 天码行空10

news2025/1/10 12:45:39

(一)实验目的

1、掌握JAVA中文件、IO类及其构造方法;
2、重点掌握文件类型所具有的文件操作方法;
3、重点掌握IO中类所具有的IO操作方法;
4、熟悉递归调用的思想及应用;
5、掌握IO中读写常用方法。

(二)实验内容和步骤

1、输出路径(以管理员的身份启动编译器)

现在在D盘中放有一个名为JavaFile的文件夹,请编写程序在控制台输出此文件夹下的所有java文件的绝对路径。
注意:要求JavaFile文件夹下至少含有三层以上的文件夹,且每层文件夹中均要求含有至少一个java文件和非java文件。

💖 IOStudy.java

import java.io.File;
import java.io.IOException;

public class IOStudy
{
	public static void main(String[] args)
	{
		String rootFolderPath = "D:\\JavaFile";
		createFolderStructure(rootFolderPath, 3); // 创建三层文件夹结构
		System.out.println("====================分割线====================");
		listJavaFiles(rootFolderPath);

	}

	/**
	 * 在指定路径创建几层目录和文件
	 * 
	 * @param path  路径
	 * @param depth 层数
	 */
	private static void createFolderStructure(String path, int depth)
	{
		File folder = new File(path);
		if (!folder.exists())
		{
			if (folder.mkdir())
			{
				System.out.println("文件夹 " + path + " 创建成功!");
			} else
			{
				System.out.println("文件夹 " + path + " 创建失败!");
				return;
			}
		}

		if (depth > 0)
		{
			for (int i = 1; i <= 2; i++)
			{ // 创建两个子文件夹
				String subFolderPath = path + File.separator + "Folder" + depth + "_" + i;
				createFolderStructure(subFolderPath, depth - 1); // 递归创建子文件夹
			}
		}

		// 在每个文件夹中创建一个Java文件和一个非Java文件
		createFile(path, "Test.java");
		createFile(path, "Test.txt");
	}

	/**
	 * 在 folderPath 目录下创建名为 filename 的文件
	 * 
	 * @param folderPath 目录
	 * @param fileName   文件名
	 */
	private static void createFile(String folderPath, String fileName)
	{
		File file = new File(folderPath, fileName);
		try
		{
			if (file.createNewFile())
			{
				System.out.println("文件 " + file.getAbsolutePath() + " 创建成功!");
			}
		} catch (IOException e)
		{
			System.out.println("文件 " + file.getAbsolutePath() + " 创建失败!");
			e.printStackTrace();
		}
	}

	private static void listJavaFiles(String folderPath)
	{
		File folder = new File(folderPath);
		if (folder.exists() && folder.isDirectory())
		{
			File[] files = folder.listFiles();
			if (files != null)
			{
				for (File file : files)
				{
					if (file.isFile() && file.getName().endsWith(".java"))
					{
						System.out.println(file.getAbsolutePath());
					} else if (file.isDirectory())
					{
						// 递归调用listJavaFiles方法
						listJavaFiles(file.getAbsolutePath());
					}
				}
			}
		} else
		{
			System.out.println("指定的路径不是一个文件夹。");
		}
	}

}

😋 输出结果

在这里插入图片描述

2、文件读写(以管理员的身份启动编译器)

分别使用三种以上的字节流输入输出方法(例如一次一个字节读写,一次一个字节数组读写,使用缓冲字节流进行读写),读取MultiFile文件夹下的某个java文件的内容,并写到C盘中的test.java文件中

💖 IOStudy2.java

import java.io.*;

public class IOStudy2
{
	public static void main(String[] args)
	{
		// 定义目录路径
		String directoryPath = "D:\\MultiFile";
		// 定义文件路径
		String filePath = directoryPath + "\\Hello.java";

		// 检查MultiFile目录是否存在,如果不存在则创建
		File directory = new File(directoryPath);
		if (!directory.exists())
		{
			if (directory.mkdirs())
			{
				System.out.println("MultiFile目录创建成功!");
			} else
			{
				System.out.println("MultiFile目录创建失败!");
				return; // 如果目录创建失败,退出程序
			}
		}

		// 使用try-with-resources语句自动关闭资源
		try (FileWriter writer = new FileWriter(filePath))
		{
			// 写入简单的Hello, World!程序
			writer.write("public class Hello {\n");
			writer.write("     public static void main(String[] args) {\n");
			writer.write("         System.out.println(\"Hello, World!\");\n");
			writer.write("     }\n");
			writer.write("}\n");
			System.out.println("Hello.java 文件创建成功!");
		} catch (IOException e)
		{
			System.out.println("文件创建失败!");
			e.printStackTrace();
		}

		String destinationPath = "C:\\test.java";

		// 方法一:一次一个字节读写
		copyFileWithByteByByte(filePath, destinationPath);

		// 方法二:一次一个字节数组读写
		copyFileWithByteArray(filePath, destinationPath);

		// 方法三:使用缓冲字节流进行读写
		copyFileWithBufferedStream(filePath, destinationPath);
	}

	private static void copyFileWithByteByByte(String sourcePath, String destinationPath)
	{
		try (InputStream in = new FileInputStream(sourcePath); OutputStream out = new FileOutputStream(destinationPath))
		{
			int b;
			while ((b = in.read()) != -1)
			{
				out.write(b);
			}
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	private static void copyFileWithByteArray(String sourcePath, String destinationPath)
	{
		try (InputStream in = new FileInputStream(sourcePath); OutputStream out = new FileOutputStream(destinationPath))
		{
			byte[] buffer = new byte[1024];
			int length;
			while ((length = in.read(buffer)) != -1)
			{
				out.write(buffer, 0, length);
			}
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	private static void copyFileWithBufferedStream(String sourcePath, String destinationPath)
	{
		try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(sourcePath));
				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destinationPath)))
		{
			byte[] buffer = new byte[1024];
			int length;
			while ((length = bis.read(buffer)) != -1)
			{
				bos.write(buffer, 0, length);
			}
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}

😋 输出结果

在这里插入图片描述

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

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

相关文章

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中&#xff0c;会遇到有UI相似的结构&#xff0c;如果每个UI都单独声明一份&#xff0c;会产生大量冗余代码&#xff0c;不利于阅读。遇到…

CSS浮动(如果想知道CSS有关浮动的知识点,那么只看这一篇就足够了!)

前言&#xff1a;在学习CSS排版的时候&#xff0c;浮动是我们必须要知道的知识点&#xff0c;浮动在设计之初是为了实现文字环绕效果的&#xff0c;但是后来被人们发现浮动在CSS排版中有着很好的实用价值&#xff0c;所以浮动便成为了CSS排版的利器之一。 ✨✨✨这里是秋刀鱼不…

论文辅助笔记:Tempo 之 model.py

0 导入库 import math from dataclasses import dataclass, asdictimport torch import torch.nn as nnfrom src.modules.transformer import Block from src.modules.prompt import Prompt from src.modules.utils import (FlattenHead,PoolingHead,RevIN, )1TEMPOConfig 1.…

LabVIEW鸡蛋品质智能分级系统

LabVIEW鸡蛋品质智能分级系统 随着现代农业技术的飞速发展&#xff0c;精确、高效的农产品质量控制已成为行业的重要需求。其中&#xff0c;鸡蛋作为日常膳食中不可或缺的重要组成部分&#xff0c;其品质直接关系到消费者的健康与满意度。本文设计并实现了一套基于LabVIEW的鸡…

docker私有仓库的registry

简介 Docker私有仓库的Registry是一个服务&#xff0c;主要用于存储、管理和分发Docker镜像。具体来说&#xff0c;Registry的功能包括&#xff1a; 存储镜像&#xff1a;Registry提供一个集中的地方来存储Docker镜像&#xff0c;包括镜像的层次结构和元数据。 版本控制&…

node应用部署运行案例

生产环境: 系统&#xff1a;linux centos 7.9 node版本&#xff1a;v16.14.0 npm版本:8.3.1 node应用程序结构 [rootRainYun-Q7c3pCXM wiki]# dir assets config.yml data LICENSE node_modules nohup.out output.log package.json server wiki.log [rootRainYun-Q7c…

使用MATLAB/Simulink点亮STM32开发板LED灯

使用MATLAB/Simulink点亮STM32开发板LED灯-笔记 一、STM32CubeMX新建工程二、Simulink 新建工程三、MDK导入生成的代码 一、STM32CubeMX新建工程 1. 打开 STM32CubeMX 软件&#xff0c;点击“新建工程”&#xff0c;选择中对应的型号 2. RCC 设置&#xff0c;选择 HSE(外部高…

单链表式并查集

如果用暴力算法的话&#xff0c;那么会直接超时&#xff0c;我们要学会用并查集去记录下一个空闲的位置 #include<bits/stdc.h> using namespace std;const int N 100005;int n; int fa[N]; int a[N];int find(int x) {if (fa[x] x) {return x;}fa[x] find(fa[x]);re…

ChatGPT DALL-E绘图,制作各种表情包,实现穿衣风格的自由切换

DALL-E绘图功能探索&#xff1a; 1、保持人物形象一致&#xff0c;适配更多的表情、动作 2、改变穿衣风格 3、小女孩的不同年龄段展示 4、不同社交平台的个性头像创作 如果不会写代码&#xff0c;可以问GPT。使用地址&#xff1a;我的GPT4 视频&#xff0c;B站会发&#…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

「Node.js」ESModule 与 CommonJS 的 区别

前言 Node.js支持两种模块系统&#xff1a;CommonJS 和 ESModules&#xff08;ESM&#xff09;&#xff0c;它们在语法和功能上有一些不同。 CommonJS (CJS) CommonJS 是 Node.js 最早支持的模块规范&#xff0c;由于它的出现在ES6之前&#xff0c;因此采取的是同步加载模块…

Linux Ubuntu 开机自启动浏览器

终端输入命令&#xff1a;gnome-session-properties 打开启动设置 如果提示&#xff1a;Command ‘gnome-session-properties’ not found, but can be installed with: apt install gnome-startup-applications 则执行&#xff1a;apt install gnome-startup-applications安装…

用pyecharts完成综合案例之全球GDP动态可视化统计图

综合案例之全球GDP 所用csv文档下载链接如下&#xff1a;https://download.csdn.net/download/qq_42707739/12621102?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171488482816800184124883%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fdownloa…

机器学习周报第40周

目录 摘要Abstract一、文献阅读1.1 摘要1.2 论文背景1.3 论文模型1.3.1 模型概述1.3.2 模型细节 1.4 模型精度 二、论文代码2.1 rtdetr.py2.2 backbone模块2.3 AIFI2.4 CCFM 总结 摘要 本周&#xff0c;我深入研读了RT-DETR&#xff08;实时目标检测变换器&#xff09;论文&am…

【数据结构】初识数据结构

引入&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人&#xff0c;另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生&#xff09; 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述&#xff1a;清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述&#xff1a;清华源创建不成功 本地配置了清华源&#xff0c;但是在创建虚拟环境时不成功&#xff0c;报错如下。 图片若看不清&…