JavaEE-文件IO操作





构造方法

一般方法,有很多,我们以下只是列举几个经常使用的


注意在上述的操作过程中,无论是绝对路径下的这个文件还是相对路径下的这个文件,都是不存在的













Reader 使用 --> 文本文件

FileReader类所涉及到的一些方法



FileInPutStream的使用,和FileReader的使用很类似

我们可以通过String类的构造方法,将内容输出






整体思路:
用户指定目录 --> 用户输入一个关键词 --> 遍历目录
列出当前目录中有哪些内容,我们想要的内容主要是普通文件 —> 开始遍历目录中的文件,这里分为files为普通文件和子目录两种情况 --> 如果是文件,看其中是否包含是关键词 I 如果是目录,就递归执行sacnDir
判断当前文件名中是否包含word --> 如果包含,则向用户发出请求是否要删除该文件
所有代码如下:
package file;import java.io.File;
import java.util.Scanner;//遍历指定目录,并询问用户是否删除关键字命名的普通文件
public class Demo10 {public static Scanner scanner=new Scanner(System.in);public static void main(String[] args) {//1.用户指定目录System.out.println("请输入需要查找的根目录");//封装为一个文件类File rootpath=new File(scanner.next());//2.让用户输入一个关键词System.out.println("请输入一个关键词");String word=scanner.next();//3.判断当前输入的目录是否有效if(!rootpath.isDirectory()){System.out.println("当前输入的目录非法");return;}//4 遍历目录scanDir(rootpath,word);}public static void scanDir(File currentDir,String word){//这里以深度优先的方式遍历目录,主要体现为递归//1.列出当前目录中有哪些内容,我们想要的内容主要是普通文件File[] files=currentDir.listFiles();if(files==null || files.length==0){//目录为空或者非法的目录(文件)return;}//2.开始遍历目录中的文件,这里分为files为普通文件和子目录两种情况for (File f:files) {//添加一个日志,方便查看执行过程System.out.println(f.getAbsoluteFile());if(f.isFile()){//如果是文件,看其中是否包含是关键词dealFile(f,word);} else{//如果是目录,就递归执行sacnDirscanDir(f,word);}}}private static void dealFile(File f,String word){//1 判断当前文件名中是否包含wordif(!f.getName().contains(word)){//不包含,则不做任何处理return;}//2.如果包含,则向用户发出请求是否要删除该文件System.out.println("找到了包含"+ word + "的文件"+ f.getAbsolutePath() + "是否需要删除?(Y/N)");String s=scanner.next();if(s.equals("Y") || s.equals("y")){f.delete();}//用户输入其它值,则忽略}
}
效果如下:


代码如下:
package file;import java.io.*;
import java.util.Scanner;
//复制文件
public class Demo11 {public static void main(String[] args) throws IOException {//1 输入源文件路径和目的文件路径并进行合法性判断Scanner scanner=new Scanner(System.in);System.out.println("请输入要复制文件的路径");File srcFile=new File(scanner.next());if(!srcFile.isFile()){System.out.println("输入的源文件路径非法");return;}System.out.println("请输入目标路径");File destFile=new File(scanner.next());//不要求目标文件本身存在,但是要求目标文件的路径是正确的if(!destFile.getParentFile().isDirectory()){System.out.println("目标文件路径非法");return;}//2 分别打开两个文件,从源文件中读取数据,将其写入目标文件中,循环直至源文件的数据读取完毕//使用字节流方式try(InputStream inputStream=new FileInputStream(srcFile);OutputStream outputStream=new FileOutputStream(destFile) ){while(true){byte[] buf=new byte[10];int n=inputStream.read(buf);if(n==-1){break;}outputStream.write(buf,0,n);}}}
}
结果如下:

相关文章:
JavaEE-文件IO操作
构造方法 一般方法,有很多,我们以下只是列举几个经常使用的 注意在上述的操作过程中,无论是绝对路径下的这个文件还是相对路径下的这个文件,都是不存在的 Reader 使用 --> 文本文件 FileReader类所涉及到的一些方法 Fil…...
二蛋赠书四期:《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》
前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…...
MySQL数据库基本操作-DQL-排序查询
介绍 如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 order by 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。 语法 select 字段名1,字段名2,…… from 表名 order by 字段名1 [asc|desc]…...
这是一篇测试文章
这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章…...
Ubuntu plt画图 新罗马字体网格marker刻度朝内
* 字体文件:坚果云下code包,新罗马字体 参考链接:Linux下Matplotlib画图New Times Roman字体设置 - 知乎 * 刻度朝内 plt.rcParams[font.sans-serif] [Times New Roman]plt.rcParams[xtick.direction]in#设置x轴刻度向内plt.rcParams[ytic…...
flutter布局中的一些细节
前言 记录flutter使用中遇到的一些细节和坑,希望能帮助到大家 Column中不能直接嵌套ListView, (需要指定ListView的高度或者加上shrinkWrap: true属性)需要限制button的大小,可以在外部嵌套一个Container或SizedBox来限制在List…...
论文解析——AMD EPYC和Ryzen处理器系列的开创性的chiplet技术和设计
ISCA 2021 摘要 本文详细解释了推动AMD使用chiplet技术的挑战,产品开发的技术方案,以及如何将chiplet技术从单处理器扩展到多个产品系列。 正文 这些年在将SoC划分成多个die方面有一系列研究,MCM的概念也在不断更新,AMD吸收了…...
第二证券:汽车产业链股活跃,恒勃股份、博俊科技“20cm”涨停
轿车产业链股9日盘中走势活跃,截至发稿,恒勃股份、博俊科技“20cm”涨停,德迈仕涨超17%,上声电子涨超14%,川环科技涨超10%,圣龙股份、科华控股、沪光股份、上海沿浦、日盈电子、赛力斯等均涨停。 工作方面…...
孙帅Spring源码
【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】...
jenkins工具系列 —— 插件 使用Changelog获取commit记录
文章目录 安装changelog插件重启jenkins配置 ChangelogExecute shell 使用 changelog邮件中html格式也可以使用构建测试(查看构建项 -> 控制台输出) 安装changelog插件 插件文件可通过 V 获取 点击 左侧的 Manage Jenkins —> Plugins ——> …...
【JavaScript】浅拷贝与深拷贝
引言 浅拷贝、深拷贝是对引用类型而言的。 引用类型的变量对应一个栈区地址,这个栈区地址处存储的值是存放的真正的数据的堆区地址。 基本数据类型的变量也对应一个栈区地址,但是该地址存储的是其真正的值。 let a b发生了什么? let obj…...
如何下载IEEE Journal/Conference/Magazine的LaTeX/Word模板
当你准备撰写一篇学术论文或会议论文时,使用IEEE(电气和电子工程师协会)的LaTeX或Word模板是一种非常有效的方式,它可以帮助你确保你的文稿符合IEEE出版的要求。无论你是一名研究生生或一名资深学者,本教程将向你介绍如…...
nvidia 驱动问题
https://stackoverflow.com/questions/43022843/nvidia-nvml-driver-library-version-mismatch https://zhuanlan.zhihu.com/p/643773939...
PDF编辑和OCR文字识别工具ABBYY FineReader PDF
ABBYY FineReader PDF是一款专业的OCR文字识别和PDF编辑工具,可以帮助用户更好地处理和管理PDF文档。以下是ABBYY FineReader PDF的一些特点: 1. 文字识别精准:ABBYY FineReader PDF具有强大的OCR文字识别功能,可以将PDF中的文字…...
什么是网络流量监控
随着许多服务迁移到云,网络基础架构的维护变得复杂。虽然云采用在生产力方面是有利的,但它也可能让位于未经授权的访问,使 IT 系统容易受到安全攻击。 为了确保其网络的安全性和平稳的性能,IT 管理员需要监控用户访问的每个链接以…...
ubuntu 终端 中文显示unicode码、乱码
Ubuntu默认的中文字符编码 locale命令查看 LANG 等参数是否无UTF-8等参数?比如 为空? Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在 /etc/environment中看到: sudo gedit /etc/environment 可以看到如下内容: P…...
作用域理解
概念:它是指对某一变量和方法具有访问权限的代码空间, 在JS中, 作用域是在函数中维护的。表示变量 或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。 ES5的作用域只有两种:全局作用域和局部作用域 全局作用域 var a1; //全局作用域 function fn1(…...
Stream 流式编程创建及其常用操作方法
目录 Stream 对象如何创建 Stream 常用的操作方法 1.过滤(Filter) 2.映射(Map) 3.扁平映射(FlatMap) 4.截断(Limit) 5.跳过(Skip) 6.排序(…...
Can 通信-协议
概述 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于…...
rustlings本地开发环境配置
克隆自己的仓库 首先我们要在github上找到自己仓库并把它克隆到本地 git clone https://github.com/LearningOS/rust-rustlings-2023-autumn-******.git下载插件 rust-analyzer和Git Graph一个可以用来解析rust代码,另一个可以可视化管理git代码库 下载rustling…...
纯文本CRM:用Markdown与Git构建极简客户关系管理系统
1. 项目概述与核心价值最近在开源社区里,我注意到一个名为anthroos/plaintext-crm的项目,它提出了一种非常规的客户关系管理(CRM)思路。简单来说,这个项目主张用纯文本文件(如 Markdown、TXT)来…...
深入聊聊Zynq RFSoC里那些容易搞混的时钟:从外部输入到片内PLL再到AXI-Stream接口时钟
深入解析Zynq RFSoC时钟架构:从外部输入到AXI-Stream接口的完整路径 在Zynq UltraScale RFSoC的设计中,时钟系统堪称整个架构的"心脏"。尤其当涉及多通道同步、跨时钟域数据传输等高阶应用时,时钟配置的细微差别往往会导致性能差异…...
77种商品-图像分类数据集
77种商品图像分类数据集 数据集(文章最后关注公众号获取数据集): 链接: https://pan.baidu.com/s/1Xcj5Z-RSUjGH47OIbH5wjQ?pwd=fq2p 提取码: fq2p 数据集信息介绍: 以下是整理后的清晰呈现,按照商品名称首字母顺序进行排列: 东方树叶红茶:文件夹中的图片数量为 150 …...
fastmod vs codemod:为什么你应该选择这个更快的代码替换工具
fastmod vs codemod:为什么你应该选择这个更快的代码替换工具 【免费下载链接】fastmod A fast partial replacement for the codemod tool. Assists with large-scale codebase refactors via regex-based find and replace with human oversight and occasional i…...
SpringBoot+Vue民宿管理系统源码+论文
代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...
开源RPA工具Clawless:本地化低代码自动化实战与核心原理
1. 项目概述:从“无爪”到“有手”,一个开源RPA项目的诞生最近在GitHub上闲逛,发现了一个挺有意思的项目,叫“Clawless”,直译过来是“无爪”。初看这个标题,你可能会有点摸不着头脑,这跟自动化…...
接入Taotoken后感受到的API调用延迟降低与错误率改善
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 接入Taotoken后感受到的API调用延迟降低与错误率改善 1. 背景与切换契机 作为一名长期在项目中集成大模型能力的开发者࿰…...
OpenCore Legacy Patcher:让你的老款Mac重获新生,畅享最新macOS系统
OpenCore Legacy Patcher:让你的老款Mac重获新生,畅享最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台2008…...
Python篇---常考的数据类型
一、常见数据类型及其特点Python 的数据类型可以分两大类:不可变类型和可变类型。这个区分是很多考点的基础。1. 不可变类型(值变了,对象就换了)整数 int特点:精度无限,只有整数不分长短。适合大数运算。考…...
NotebookLM音乐学应用的5个致命误区(附诊断清单),90%新手在第3步就误入歧途导致文献溯源失效
更多请点击: https://intelliparadigm.com 第一章:NotebookLM音乐学研究辅助的底层逻辑与适用边界 NotebookLM 本质是一个基于用户上传文档构建私有语义索引的轻量级 AI 助手,其核心并非通用大模型的自由生成,而是“引用驱动型推…...
