JavaEE-文件IO操作

news2024/11/20 14:24:40

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
构造方法
在这里插入图片描述


一般方法,有很多,我们以下只是列举几个经常使用的
在这里插入图片描述

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


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


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{
                //如果是目录,就递归执行sacnDir
                scanDir(f,word);
            }

        }
    }
    private  static  void  dealFile(File f,String word){
        //1 判断当前文件名中是否包含word
        if(!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);
           }
        }
    }
}

结果如下:

在这里插入图片描述


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

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

相关文章

Covert Communication 与选择波束(毫米波,大规模MIMO,可重构全息表面)

Covert Communication for Spatially Sparse mmWave Massive MIMO Channels 2023 TOC abstract 隐蔽通信,也称为低检测概率通信,旨在为合法用户提供可靠的通信,并防止任何其他用户检测到合法通信的发生。出于下一代通信系统安全链路的强烈…

C#学习系列相关之多线程(一)----常用多线程方法总结

一、多线程的用途 在介绍多线程的方法之前首先应当知道什么是多线程, 在一个进程内部可以执行多个任务,而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。进程是拥有资源的基本单位, 线程是CPU调度的基本单位。多线程的作用…

iStoreOS搭建主路由有什么好处

iStoreOS 作为一种功能强大的软路由系统,搭建主路由可以带来多种好处。本文泪雪网将详细介绍 iStoreOS 搭建主路由的好处,包括增强网络安全性、提供更灵活的网络管理、实现高级功能和提升性能等方面。 一、增强网络安全性 iStoreOS 搭建主路由可以增强网…

计算机毕业设计 基于协调过滤算法的绿色食品推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

YOLOV7改进-添加EIOU,SIOU,AlphaIOU,FocalEIOU

打开utils->general.py 找到bbox_iou(),345行左右,将下面的与源码进行替换 def bbox_iou(box1, box2, x1y1x2y2True, GIoUFalse, DIoUFalse, CIoUFalse, SIoUFalse, EIoUFalse, WIoUFalse, FocalFalse, alpha1, gamma0.5, sc…

【智慧校园源码】中小学智慧班牌系统,实现校园信息化交流建设,提高班级管理效率

智慧班牌系统源码 电子班牌原生小程序源码 智慧校园云平台系统源码 智慧班牌可以通过以云平台为基础,结合互联网、物联网系统进行校园管理,实现学校数据、教学资源共享,推进校园信息化交流建设。而展示在班牌终端的信息可以随时更改和上传新的…

使用nginx作为API网关

使用nginx作为API网关 如果我们需要部署反向代理,我们可能已经听说过 nginx。如果我们还没听说过,让我们在这篇文章谈一谈它,以及我们如何使用它作为API网关。 什么是nginx? nginx是一个HTTP服务器和反向代理,一个邮件代理服务…

【软件测试】自动化测试selenium(二)

文章目录 三. 掌握Selenium常用的API使用1. webdriver API2. 操作测试对象3. 添加等待4. 打印信息5. 浏览器的操作6. 键盘事件7. 鼠标事件8. 定位一组元素9. 多层框架/窗口定位10. 下拉框处理11. 弹窗处理12. 上传文件13. 关闭浏览器14. 切换窗口15. 截图操作 三. 掌握Selenium…

python实现 线性卷积用Toeplitz 矩阵运算

python实现 线性卷积用Toeplitz 矩阵运算 前言 在看论文的时候,发现Toeplitz 矩阵和线性卷积有关系,于是翻了程佩青老师的数字信号处理课本,发现是有讲过这点的。 Toeplitz 矩阵:从左上到右下的斜对角线都相同,如下…

性能测试工具 - LoadRunner

什么是性能测试? 性能测试就是测试人员利用性能测试工具模拟系统在不同情况下的性能指标是否正常。 性能测试工具 - LoadRunner 接下来介绍LoadRunner的作用和使用。 LoadRunner 就是一个很常见的性能测试工具,它有三个部分组成: 这三个组…

GhostNet原理解析及pytorch实现

论文:https://arxiv.org/abs/1911.11907 源码:https://github.com/huawei-noah/ghostnet 简要论述GhostNet的核心内容。 Ghost Net 1、Introduction 在训练良好的深度神经网络的特征图中,丰富甚至冗余的信息通常保证了对输入数据的全面理…

MySQL:数据库的物理备份和恢复-冷备份(3)

介绍 物理备份: 直接复制数据文件进行的备份 优点:不需要其他的工具,直接复制就好,恢复直接复制备份文件即可 缺点:与存储引擎有关,跨平台能力较弱 逻辑备份: 从数据库中导出数据另存而进行的备…

Linux YUM源(本地/网络源)配置详解

目录 一、挂载 二、建立本地源 配置详解: 三、建立网络源 配置详解: 四、验证 一、挂载 ——将光盘挂载到 /mnt ——挂载光盘时要保证虚拟机光盘处于连接状态 命令:[rootlocalhost mnt]# mount /dev/sr0 /mnt # 此时还未挂载 [rootlo…

安装cad显示找不到msvcp140.dll怎么解决?靠谱的msvcp140.dll丢失的解决方法分享

在安装 CAD 软件时,出现找不到 msvcp140.dll 的困扰,让许多用户感到十分沮丧。msvcp140.dll 是 Visual C Redistributable for Visual Studio 2015 的运行库文件,对于 CAD 软件的正常运行至关重要。因此,解决这个问题是当务之急。…

玩转Linux—如何在Linux环境中部署MySQL、Redis和nginx

1、Linux常用命令 Linux学习之路: VMware虚拟机安装Linux系统(详解版) 查看当前文件目录:ls查看目录中文件详细信息:ll输出当前所处的目文件目录:pwdLinux查看当前IP地址:ifconfigWindows查看当前IP地址&#xff1…

如何使用大语言模型来绘制图画

请创作一张科技感十足的图片,包含siri和iphone两个元素,请帮我挑选合适的style和background 好的,我会为你创作一张科技感十足的图片,包含siri和iphone两个元素。我会根据你的要求,选择一种适合的风格和背景。请稍等一…

制作电子期刊没模板?请疯狂看我

你们是不是也在为制作电子期刊而烦恼?没有合适的模板,内容再精彩也难以展现。今天给大家分享一个超级实用的秘籍!✨ 首先,我们要明白,电子期刊制作的关键在于模板的选择。一个好的模板可以让你的内容瞬间焕发光彩。但是…

Nodejs 第十七章(events)

EventEmitter Node.js 核心 API 都是采用异步事件驱动架构,简单来说就是通过有效的方法来监听事件状态的变化,并在变化的时候做出相应的动作。 fs.mkdir(/tmp/a/apple, { recursive: true }, (err) > {if (err) throw err; });process.on(xxx,()>…

玩转ChatGPT:DALL·E 3生成图像

一、写在前面 好久不更新咯,因为没有什么有意思的东西分享的。 今天更新,是因为GPT整合了自家的图像生成工具,名字叫作DALLE 3。 DALLE 3是OpenAI推出的一种生成图像的模型,它基于GPT-3架构进行训练,但是它的主要目…

STM32CubeMX学习笔记-USART_DMA

STM32CubeMX学习笔记-USART_DMA 一、DMA的概念二、数据传输方式普通模式循环模式 三、以串口方式讲解串口DMA方式发送函数:HAL_UART_Transmit_DMA串口DMA方式接收函数:HAL_UART_Receive_DMA获取未传输数据个数函数:__HAL_DMA_GET_COUNTER关闭…