基于文件流操作文件系统

stream

  • 文件流
  • Scanner
  • Writer
  • 遍历目录删除指定文件
  • 把目标文件复制为源文件
  • 小结

文件流

文件的内容本质上都是来自于硬盘,而硬盘由操作系统管理.
使用java来操作文件,就要用到java的api.

这里涉及一系列的类:

字节流: InputStream和OutputStream是以操作字节为单位(二进制文件).
字符流: Reader和Write是以操作字符为单位(文本文件)

public static void main(String[] args) throws IOException {try(InputStream inputStream = new FileInputStream("./testDir/test.txt")) {while (true) {byte[] bytes = new byte[1024];int n =inputStream.read(bytes);for (int i = 0; i < n; i++) {System.out.printf("%x ", bytes[i]);}}}}// hello file// 68 65 6c 6c 6f 20 66 69 6c 65

字节数组存储read来的字节数据.
在这里插入图片描述

Scanner

在操作系统中, 操作系统是一个广义的概念,System.in也是一个特殊的文件,对应标准输入.
Scanner也可以来读取文本数据,把读到的字节数据进行转换.
Scanner只适用于读文本文件, 不适合读取二进制文件.

public static void main(String[] args) throws IOException{try(InputStream inputStream = new FileInputStream("./testDir/test.txt")) {Scanner scanner = new Scanner(inputStream);String string = scanner.nextLine();System.out.println(string);}}// hello file

Writer

write之前需要打开文件,用完后也需要关闭文件.

public static void main(String[] args) throws IOException {try(Writer writer = new FileWriter("./testDir/test1.txt")) {writer.write("hello world");}}// test1.txt的内容就被修改为hello world了// 如果不想修改test1.txt的内容,使用append方法追加内容就可以了

遍历目录删除指定文件

private 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);}private static void scanDir(File rootPath, String word) {// 1. 列出目录都包含哪些内容File[] files = rootPath.listFiles();if(files == null || files.length == 0) {// 不合法目录return;}// 2.遍历列出的文件,分两种情况讨论for(File f : files) {System.out.println(f.getAbsolutePath());if(f.isFile()) {// 3. 如果是普通文件,删除包含关键字的文件deleteFile(f, word);}else {// 3. 继续深层遍历scanDir(rootPath,word);}}}private static void deleteFile(File f, String word) {// 1. 判断f是否包含wordif(!f.getName().contains(word)) {return;}System.out.println("该文件是: " + f.getAbsolutePath() + "是否要删除(y/n)");String choice = scanner.next();if(choice.equals("y") || choice.equals("Y")) {f.delete();}}

会遍历根目录,找到所有包含关键字的文件,并询问是否要删除.

把目标文件复制为源文件

public static void main(String[] args) throws IOException{Scanner scanner = new Scanner(System.in);System.out.println("请输入源目标路径: ");String src = scanner.next();File srcFile = new File(src);if(!srcFile.isFile()) {System.out.println("不合法的源文件!!");return;}System.out.println("请输入目的目标路径");String dest = scanner.next();File destFile = new File(dest);if(!destFile.isFile()) {System.out.println("不合法的目标文件!!");return;}try(InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream = new FileOutputStream(destFile) ){while (true) {byte[] bytes = new byte[20480];int n = inputStream.read(bytes);if(n == -1) {System.out.println("eof");break;}outputStream.write(bytes);}}}

小结

文件流的学习到此结束了, 后面会继续 总结网络方面的知识.
有收获的小伙伴多多支持.

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

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

相关文章

MySQL中的并发控制,读写锁,和锁的粒度

MySQL中的并发控制&#xff0c;读写锁&#xff0c;和锁的粒度 并发控制的概述 在数据库系统中&#xff0c;并发控制是一种用于确保当多个用户同时访问数据库时&#xff0c;系统能够提供数据的一致性和隔离性的机制。MySQL支持多种并发控制技术&#xff0c;其中包括锁机制、多…

pytorch-解决过拟合之regularization

目录 1.解决过拟合的方法2. regularization2. regularization分类3. pytorch L2 regularization4. 自实现L1 regularization5. 完整代码 1.解决过拟合的方法 更多的数据降低模型复杂度 regularizationDropout数据处理早停止 2. regularization 以二分类的cross entropy为例&…

YesPMP众包平台最新项目

YesPMP一站式互联网众包平台&#xff0c;最新外包项目&#xff0c;有感兴趣的用户可进入平台参与竞标。 &#xff08;竞标后由项目方直接与服务商联系&#xff0c;双方直接对接&#xff09; 1.查看项目&#xff1a;个人技术-YesPMP平台 2.查看项目&#xff1…

运维 kubernetes(k8s)基础学习

一、容器相关 1、发展历程&#xff1a;主机–虚拟机–容器 主机类似别墅的概念&#xff0c;一个地基上盖的房子只属于一个人家&#xff0c;很多房子会空出来&#xff0c;资源比较空闲浪费。 虚拟机类似楼房&#xff0c;一个地基上盖的楼房住着很多人家&#xff0c;相对主机模式…

大数据学习第四天

文章目录 yaml 三大组件的方式交互流程hive 使用安装mysql(hadoop03主机)出现错误解决方式临时密码 卸载mysql (hadoop02主机)卸载mysql(hadoop01主机执行)安装hive上传文件解压解决版本差异修改hive-env.sh修改 hive-site.xml上传驱动包初始化元数据在hdfs 创建hive 存储目录启…

人工智能基础-Python之Pandas库教程

文章目录 前言一、Pandas是什么&#xff1f;二、使用步骤1.引入库2.数据读取2.1 数据类型2.2 数据读取1.常见操作2.txt读取 3.pandas的数据结构3.1 Series1.属性2.创建Series3.查询 3.2 DataFrame1.创建DataFrame 4.查询数据4.1 data.loc 根据行列标签值进行查询1.使用单个labe…

javaWeb项目-社区医院管理服务系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java技术 Java语…

机器学习中常见的数据分析,处理方式(以泰坦尼克号为例)

数据分析 读取数据查看数据各个参数信息查看有无空值如何填充空值一些特殊字段如何处理读取数据查看数据中的参数信息实操具体问题具体分析年龄问题 重新划分数据集如何删除含有空白值的行根据条件删除一些行查看特征和标签的相关性 读取数据 查看数据各个参数信息 查看有无空…

【iOS开发】(六)react Native 路由嵌套传参与框架原理(完)20240423

【iOS开发】(六)react Native 路由嵌套传参与框架原理&#xff08;完&#xff09;20240423 感谢拉钩教育的教学。 &#xff08;五&#xff09;我们介绍了四种路由导航&#xff0c;这一节我们介绍他们的嵌套传参和框架的整体原理。到这里&#xff0c;大家已经能用RN框架进行一些…

电商价格监测的价值是什么

品牌做电商价格监测的原因多是为了渠道管控&#xff0c;即控价&#xff0c;管控价格前需要对渠道中的价格数据进行监测&#xff0c;通过监测价格&#xff0c;对渠道中低价数据进行全面的了解&#xff0c;如有授权低价率&#xff0c;非授权低价率&#xff0c;非授权低价店铺的总…

python与上位机开发day02

1.常见运算符 1.1 赋值运算符 赋值运算符主要用来对变量进行赋值,包括如下这些: 运算符描述赋值加等于-减等于*乘等于/除等于//整除等于%模等于**幂等于 实例如下: a 10 a 5 # 等价于 a a5 a *2 # 等价于 a a*21.2 比较运算符 比较运算符主要用来比较两个数据的大小…

Windows 搭建自己的大模型-通义千问

1、安装 pytorch https://pytorch.org/get-started/locally/ 点击进入官网&#xff0c;如图选择自己的环境得到pip安装依赖的命令&#xff1a; pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu 2、拉取代码并安…

QA测试开发工程师面试题满分问答20: 软件的安全性应从哪几个方面去测试?

软件的安全性测试应从多个方面进行&#xff0c;并确保覆盖以下关键方面&#xff1a; 当回答问题时&#xff0c;可以根据自己的经验和知识&#xff0c;从上述要点中选择适合的方面进行详细说明。强调测试的综合性、全面性和持续性&#xff0c;并强调测试的重要性以及如何与开发团…

AIGC-stable-diffusion(文本生成图片)+PaddleHub/HuggingFace

功能 stable-diffusion(文本生成图片)PaddleHub&#xff0c;HuggingFace两种调用方式 PaddleHub 环境 pip install paddlepaddle-gpu pip install paddlehub 代码 from PIL import Image import paddlehub as hub module hub.Module(namestable_diffusion)## 保存在demo…

spring高级篇(二)

1、Aware和InitializingBean Aware和InitializingBean都与Bean的生命周期管理相关。 Aware接口: 概念: Aware接口是Spring框架中的一个标记接口&#xff0c;它表示一个类能够感知到&#xff08;aware of&#xff09;Spring容器的存在及其特定的环境。Spring框架提供了多个Awar…

jackson.dataformat.xml 反序列化 对象中包含泛型

重点&#xff1a; JacksonXmlProperty localName 指定本地名称 JacksonXmlRootElement localName 指定root的根路径的名称&#xff0c;默认值为类名 JsonIgnoreProperties(ignoreUnknown true) 这个注解写在类上&#xff0c;用来忽略在xml中有的属性但是在类中没有的情况 Jack…

索引的最左匹配原则

索引的最左匹配原则 我们先创建一张测试表&#xff0c;表的两个字段用来创建联合索引 CREATE TABLE test(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,col1 INT,col2 INT,col3 INT );CREATE INDEX idx_c1c2 ON test(col1, col2);现在我们就可以分析查询sql脚本了 1.使用联合索…

CentOS 7.9.2007 中Docker使用GPU

一、安装nvidia驱动 1.1&#xff0c;查看显卡驱动 # 查看显卡型号 lspci | grep -i nvidia 1.2&#xff0c;进入 PCI devices &#xff0c;输入上一步查询到的 2204 1.3&#xff0c;进入 官方驱动 | NVIDIA&#xff0c;查询 Geforce RTX 3090 驱动并下载 1.4&#xff0c;禁用…

《XR806开发板试用》硬件IIC驱动MPU6050

1.环境配置 总结一下遇到的问题&#xff1a; 1.需要修改配置文件中的文件路径 2.固件编译出现以下问题时&#xff0c;需要修改文件内容 2.工程目录结构 device/xradio/xr806/ohosdemo/car_demo └── src #源文件 └── main.c #主函数 └── mpu6050.c #驱动代码 └…

国产PLC有哪些,哪个牌子比较好用?

你知道国产PLC有哪些吗,哪个牌子更好用吗&#xff1f; 今天拿出国产先锋的汇川与台达对比&#xff0c;注&#xff1a;视频后方有各品牌学习资料免费送&#xff0c;需要的移步自取。话说回来&#xff0c;只要基于Codesys开发的都比较好用&#xff0c;只是使用底层芯片不同&…