【JavaEE】——文件IO的应用

news2024/10/6 10:08:37

 

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文件内容中是否包含关键字word
                searchInFile(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){
                    //说明文件内容读完了,那就跳出循环,非return
                    break;
                }
                //用String字符串接收一下
                String s = new String(buffer , 0 , n);
                //如果一次读不完,我们就用字符串进行拼接
                stringBuffer.append(s);
            }
            if (stringBuffer.indexOf(word) == -1){
                //返回-1的话就是没匹配到这个word关键字
                return;
            }
            //没返回-1就说明在这个文件内容中找到匹配上了word
            System.out.println("找到了,所含" + word + "的文件路径是" + f.getAbsolutePath());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

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

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

相关文章

森林火灾的预防方案

对于森林火灾的预防,我们需要了解森林火灾形成的原因。一般来森林火灾的形成分为自然原因和人为原因;自然原因多为干燥天气的自燃、雷电火等,而人为原因多是农、林、牧业生产用火,林副业生产用火,以及工矿运输生产用火…

无人机(自组穿越机,航模)-芯片选型

飞控MCU: 型号尺寸子型号参数规格备注STM325*532位ARM Cortex-M3 CPU,72MHz,256KB Flash,20KB RAMLQFP 48F33*332位ARM Cortex-M4 CPU,72MHz,256KB Flash,40KB RAMMPU6050F45*532位ARM Cortex-M4 CPU&…

分享我“Excel 表格”关键字的博客笔记(python脚本全程自动)

Python脚本全程自动,全部Python内建工具脚本纯净。 (笔记模板由python脚本于2024年10月05日 19:51:06创建,本篇笔记适合喜欢Excel和Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大…

MQ(仅供自己参考)

同步通讯的优缺点: 优点:时效高,数据一致,过程简单 缺点:耦合度高。性能下降。CPU等待资源的浪费。级联失败。 2、异步通讯:异步调用常见的实现就是事件驱动模式 异步的优缺点: 优点&#xf…

隐喻的使用及误用

Larry Constantine 著,whoisred 译 长期以来,在图形用户界面设计中,隐喻(metaphor)一直很流行。但是,虽然有少数简单的隐喻——如文件夹及垃圾箱——令人击节叫好,可事实上,大多数隐…

去噪扩散模型

Denoising Diffusion Probabilistic Models 图像扩散模型是一种生成模型,它基于概率扩散过程来生成新的图像。 核心步骤包括:(1)前向扩散过程;(2)逆向扩散过程 前向扩散过程(正向过…

第十五周:机器学习笔记

第十五周周报 摘要Abstract一、机器学习1. 各式各样神奇的自注意力机制1.1 Local Attention/Truncated Attention(截断注意力机制)1.2 Stride Attention(跨步注意力机制)1.3 Global Attention(全局注意力机制&#xff…

Jenkins pipeline配置示例

前提条件&#xff1a;已经安装Jenkins并能正常启动 如果Jenkins安装启动遇到问题可以参考&#xff1a; 1.创建pipeline 点击新建项目&#xff1a; 输入名称&#xff0c;选择pipeline&#xff1a; 进入配置页面&#xff0c;如果要配置GitHub Webhook要勾选&#xff1a;<fo…

k8s 中的金丝雀发布(灰度发布)

目录 1 什么是金丝雀发布 2 Canary 发布方式 3 Canary 两种发布方式实操 3.1 准备工作 3.1.1 将 nginx 命名两个版本 v1 与 v2 3.1.2 暴露端口并指定微服务类型 3.1.3 进入 pod 修改默认发布文件 3.1.4 测试 service 是否正常 3.2 基于权重的灰度发布 3.2.1 创建 Igress 资源类…

Uncaught TypeError: 0 is not a function的解决方法

好久不见&#xff0c;我胡汉三又回来了。 是的&#xff0c;我又发现问题了。 写JS的时候&#xff0c;发现了一堆原则性的问题&#xff0c;但是这些问题又刚好是别人没怎么遇到的。 是的&#xff0c;我用ChatGPT了。 (function frame() {window.requestAnimationFrame(frame)…

NVIDIA网卡系列之ConnectX-3规格信息(10G-PCIe 3.0x4-PF?VF?-2013年发布)

背景 NVIDIA ConnectX-3系列的网卡&#xff0c;早期还在Mellanox未被NVIDIA收购的时候就发布了&#xff0c;支持10G&#xff0c;PCIe3.0&#xff0c;最大x8通道lanes。 是10G级别的一代&#xff08;10G-CX3&#xff0c;50G-CX4&#xff0c;100G-CX5&#xff0c;200G-CX6&#…

Linux线程(七)线程安全详解

当我们编写的程序是一个多线程应用程序时&#xff0c;就不得不考虑到线程安全的问题&#xff0c;确保我们编写的程序是一个线程安全&#xff08;thread-safe&#xff09;的多线程应用程序&#xff0c;什么是线程安全以及如何保证线程安全&#xff1f;带着这些问题&#xff0c;本…

光伏项目管理如何更高效化?

一、项目规划与启动阶段的优化 1、智能规划工具&#xff1a;光伏管理软件通常配备有智能项目规划模块&#xff0c;能够根据地理位置、气候条件、政策补贴等因素&#xff0c;自动计算最佳装机容量、预测发电量及收益&#xff0c;帮助项目团队快速制定合理的项目方案。这大大缩短…

大数据毕业设计选题推荐-NBA球员数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

知识图谱入门——9: spaCy中命名实体识别(NER)任务中的预定义标签详解及案例(GPE、MONEY、PRODUCT、LAW、FAC、NORP是什么?)

命名实体识别&#xff08;NER, Named Entity Recognition&#xff09;是自然语言处理&#xff08;NLP&#xff09;中的重要任务之一&#xff0c;旨在从文本中识别出特定的实体&#xff0c;如人名、地名、时间等。spaCy 是一个广泛使用的 NLP 库&#xff0c;它提供了预训练的模型…

数据结构之排序(5)

摘要&#xff1a;本文主要讲各种排序算法&#xff0c;注意它们的时间复杂度 概念 将各元素按关键字递增或递减排序顺序重新排列 评价指标 稳定性: 关键字相同的元素经过排序后相对顺序是否会改变 时间复杂度、空间复杂度 分类 内部排序——数据都在内存中 外部排序——…

涂色问题 乘法原理(2024CCPC 山东省赛 C)

//*下午打得脑子连着眼睛一起疼 很多很基础的题目都没有做出来&#xff0c;规律题也找得很慢。比如下面这题&#xff0c;一定要多做&#xff0c;下次看到就直接写。 原题链接&#xff1a;https://codeforces.com/group/w6iGs8kreW/contest/555584/problem/C C. Colorful Segm…

LabVIEW光偏振态检测系统

开发一套LabVIEW的高精度光偏振态检测系统&#xff0c;采用机械转动法结合光电探测器和高性能数据采集硬件&#xff0c;能快速、准确地测量光的偏振状态。该系统广泛应用于物理研究、激光技术和光学工业中。 系统组成 该光偏振态检测系统主要由以下硬件和软件模块构成&#xf…

无人机+无人车+机器狗+无人船:大规模组网系统技术详解

无人机、无人车、机器狗和无人船的大规模组网系统技术&#xff0c;是实现海陆空全空间无人设备协同作业的关键。这种组网系统技术通过集成先进的通信、控制、感知和决策技术&#xff0c;使得不同类型的无人平台能够高效、准确地完成各种复杂任务。以下是对该技术的详细解析&…

SysML案例-呼吸机

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 图片示例摘自intercax.com&#xff0c;作者是Intercax公司总裁Dirk Zwemer博士。