【JavaEE】——文件IO的应用

 

8e19eee2be5648b78d93fbff2488137b.png

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

 

一:文件的搜索(面试高频)

 二:文件的复制

三:查询文本内容中包含“word”的文件


一:文件的搜索(面试高频)

import java.io.File;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: Hua YY* Date: 2024-10-05* Time: 13:42*/
public class IODemon15 {//用代码实现,查询文件这样一个功能public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入你要查询的文件名");String fileName = scanner.next();System.out.println("请输入查询的目录");String rootPath = scanner.next();//这一步卡住了,创建一个文件对象File rootFile = new File(rootPath);//如果当前搜索的目录是一个文件或者是一个空目录那么报错if (!rootFile.isDirectory()){System.out.println("当前的输入有误");}//3:参数rootFile是搜索起始的文件,fileName是要找的文件scnnDic(rootFile,fileName);}private static void scnnDic(File rootFile , String fileName){//1:把当前文件的子目录全都列出来File[] files = rootFile.listFiles();//2:如果当前文件为空则返回if(files == null){return;}//3:不为空则遍历当前文件,看该文件下有哪些文件for(File file : files){System.out.println("当前遍历到的目录是:"+file.getAbsolutePath());if (file.isFile()){if (file.getName().equals(fileName)){System.out.println("找到了符合要求的文件" + file.getAbsolutePath());}}else if (file.isDirectory()){scnnDic(file,fileName);}else{//这里暂时不用写什么东西}}}}

 

 

 

 二:文件的复制

用到了InputStream和OutputStream打开文件的方式

下述复制是二进制复制,可以复制任何照片和文件

import java.io.*;
import java.nio.file.Files;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: Hua YY* Date: 2024-10-05* Time: 16:10*/
public class IODemo16 {//复制一个源文件public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入你要复制的源文件的所在路径");String scrPath = scanner.next();System.out.println("请输入复制后的文件目标所在的路径");String desPath = scanner.next();//1:判断源文件是否存在File scrFile = new File(scrPath);if (!scrFile.exists()){System.out.println("你要找的源文件不存在");}/** 目标文件的父目录存在即可*/File desFile = new File(desPath);if (!desFile.getParentFile().exists()){System.out.println("目标路径有误");}/** 分别以读、写的方式打开文件*/try(InputStream inputStream = Files.newInputStream(scrFile.toPath());OutputStream outputStream = new FileOutputStream(desFile)){while(true){byte[] buffer = new byte[1024];int n = inputStream.read(buffer);if (n == -1){break;}outputStream.write(buffer,0,n);}} catch (IOException e) {throw new RuntimeException(e);}}
}

三:查询文本内容中包含“word”的文件

在指定文件下查询,包含输入的关键字(word)的文件所在的路径,并打印路径

import jdk.internal.util.xml.impl.Input;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: Hua YY* Date: 2024-10-05* Time: 18:47*/
public class IODemo17 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入在哪个文件下查询(输入路径)");String rootPath = scanner.next();System.out.println("请输入你要查询的关键字word(查哪些文件中内容包含关键字word)");String word = scanner.next();//构造文件对象File file = new File(rootPath);//判断该文件对象是否是一个目录if (!file.isDirectory()){System.out.println("输入的路径有误");return;}//是一个目录在这个目录中在进行查找//scan扫描scanDir(file,word);}private static void scanDir(File file , String word){File[] files = file.listFiles();//files数组为null返回,说明递归到最深最里面的文件了if (files == null){return;}//遍历该文件中所包含的所有文件for(File f : files){if (f.isFile()){//写一个方法,来判断这个f文件内容中是否包含关键字wordsearchInFile(f,word);}else if (f.isDirectory()){//继续往下递归scanDir(f,word);}else {//不用写}}}private static void searchInFile(File f , String word){//用读的方式打开文件// 用文件构造的输入流读操作try(InputStream inputStream = new FileInputStream(f)){StringBuffer stringBuffer = new StringBuffer();while(true){//一次读取多个字节byte[] buffer = new byte[1024];int n = inputStream.read(buffer);//读到的放到数组,n为字节数量if (n == -1){//说明文件内容读完了,那就跳出循环,非returnbreak;}//用String字符串接收一下String s = new String(buffer , 0 , n);//如果一次读不完,我们就用字符串进行拼接stringBuffer.append(s);}if (stringBuffer.indexOf(word) == -1){//返回-1的话就是没匹配到这个word关键字return;}//没返回-1就说明在这个文件内容中找到匹配上了wordSystem.out.println("找到了,所含" + word + "的文件路径是" + f.getAbsolutePath());} catch (IOException e) {throw new RuntimeException(e);}}
}

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

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

相关文章

ElasticSearch 备考 -- Snapshot Restore

一、题目 备份集群下的索引 task,存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份,主要是通过创建快照,涉及到以下2步骤 Setp1:注册一个备份 snapshot repository Setp2:创建 snapshot 可以通过两种方…

InnoDB 磁盘结构 - Binlog

文章目录 binlog 的格式mysqbinlog 工具SHOW binlog events;binlog 和 redo log 对比 https://dev.mysql.com/doc/refman/8.4/en/binary-log.html binlog 全称 BinaryLog,是 MySQL 数据库中用于记录所有更改数据库状态的事件的日志文件。它主要用于以下几个目的&am…

分析JS Crash(进程崩溃)

一、JS Crash异常检测能力 1、JS Crash日志规格 以下是进程崩溃日志信息中对应字段解释。 Build info:XXX-XXXX X.X.X.XX(XXXXXXXX) <- 版本信息 Module name:com.example.myapplication <- 模块名 Version:1.0.0 <- 版本号 Pid:579 <- 进程号 Uid:0 <- 用户ID…

水凝胶发生器,不对称设计妙,医电应用前景广

大家好&#xff01;今天来了解一种具有工程机械离子不对称性的水凝胶发生器——《A high-current hydrogel generator with engineered mechanoionic asymmetry》发表于《Nature Communications》。嘿&#xff01;你能想象一种材料&#xff0c;它能像魔法一样在低频运动下产生高…

AI 写作工具汇总

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: ​ 前言: 在信息时代的浪潮中&#xff0c;AI 写作应运而生。它以强大的算法和海量的数据为支撑&…

人工智能时代中,产品经理的生存指南

前言 从AI技术到商业变现的过程中&#xff0c;一招不慎&#xff0c;很可能满盘皆输。在AI时代&#xff0c;一个优秀的产品经理&#xff0c;应该具备哪些能力呢&#xff1f;通过对人工智能产品生命周期的解读&#xff0c;明确在各个环节中&#xff0c;人工智能所需要承担的工作…

大厂出来的人为什么不比你高效?

在最近参加的一个线下聚会上&#xff0c;有人问我&#xff1a;“我们单位有来自阿里、腾讯、华为这些大厂的人&#xff0c;为什么我没觉得他们做事比我们这些没大厂经历的人更有章法和效率&#xff1f;”你别说&#xff0c;这一问所反映的现象&#xff0c;与我在阿里巴巴工作时…

Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-9000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【2024年最新】基于springboot+vue的点餐平台网站lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

Python+Django预约管理系统

程序示例精选 PythonDjango预约管理系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjango预约管理系统》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习…

kubernetes(K8s)学习(一)

本文主要是搭建一个k8s平台&#xff0c;并部署一个springboot的jar包&#xff0c;后续以此作为学习k8s的环境。 1. 搭建k8s集群 网上有很多指导&#xff0c;大家可以在网上搜索一下&#xff0c;比如这个&#xff1a;K8s搭建集群-CSDN博客&#xff0c;本人通过VMware安装3台虚拟…

昇思学习打卡营第33天|基于MindSpore的恶性皮肤肿瘤识别

1. 实验介绍 本次实验的目标是基于MindSpore框架&#xff0c;训练一个ResNet50模型&#xff0c;用于恶性皮肤肿瘤的分类识别。本实验将使用包含四类皮肤肿瘤图片的数据集&#xff0c;针对ResNet50模型进行微调&#xff0c;训练出一个能够精准分类皮肤病的模型。主要过程包括数据…

Java项目实战II基于Java+Spring Boot+MySQL的房产销售系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着房地产市场的蓬勃发展&#xff0c;房产销售业务日益复杂&#xff0c;传统的手工管理方式已难以满…

指针赋值or常数赋值

int main (){int a 10;int b ;b a;int *c &a;int *d c; } 常数 a,b赋值&#xff1a; 都是将存储的值&#xff08;10&#xff09;赋值给别人。 指针赋值也是类似的&#xff1a; 指针存储的值&#xff08;&a&#xff09;为地址&#xff0c;就是把c指向的地址赋值给…

SaaS 应用如何助长网络犯罪

过去十年&#xff0c;软件即服务 (SaaS)的采用呈爆炸式增长&#xff0c;彻底改变了我们的工作方式。 从电子邮件平台到通信和协作应用程序&#xff0c;再到文件存储和共享服务&#xff0c;这些工具有望为我们的日常工作生活带来更大的灵活性和效率&#xff0c;尤其是在当今的远…

2.创建第一个MySQL存储过程(2/10)

引言 在现代数据库管理中&#xff0c;存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句集合&#xff0c;这些语句被保存在数据库中&#xff0c;并且可以被多次调用执行。存储过程不仅可以提高数据库操作的效率&#xff0c;还能增强数据的安全性和一致…

unity 2d 近战攻击判定的三种方式

1. 给攻击帧添加碰撞盒 优点&#xff1a;配置直观&#xff0c;无需事件触发 缺点&#xff1a;无法定制&#xff0c;效率低 检测放在子物体&#xff0c;可以控制旋转 添加触发器事件 注意OnTriggerEnter2D只会在挂载了collider的组件上触发 protected virtual void OnTrigge…

降压芯片TPS54821

降压芯片TPS54821 介绍 价格低廉&#xff0c;只需1.5元。是一个同步整流降压BUCK电路。MOS管内置。输入电压为4.5V至17V&#xff0c;输出电压为0.6V到15V&#xff0c;输出电流最大到8A。是QFN封装&#xff0c;焊接时有些许困难。得益于QFN封装&#xff0c;其引线电感非常的小…

【深入理解SpringCloud微服务】手写实现断路器算法

【深入理解SpringCloud微服务】手写实现断路器算法 断路器状态切换断路器接口断路器算法实现相关属性failed()success()canPass() 断路器状态切换 在分析断路器算法前&#xff0c;我们先复习一下断路器的状态转换。 断路器一般有三个状态&#xff1a;关闭、打开、半开。 断路…

PP-Structure 快速入门

PP-Structure 快速入门 1. 环境准备2.快速使用2.1 命令行使用2.1.1 图像定位布局分析表格识别2.1.2 布局分析表格识别2.1.3 布局分析2.1.4 表格识别2.1.5 关键信息提取2.1.6 布局恢复2.2 python 脚本使用2.2.1 图像方向布局分析表格识别2.2.2 布局分析表格识别2.2.3 布局分析2…