2023.10.5 文件操作IO 经典例题

news2024/10/7 20:35:04

目录

例题一

例题二 


例题一

  • 扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否删除该文件

代码如下:

package io;

import java.io.File;
import java.util.Scanner;

//扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件
public class IODemo12 {
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
//        让用户输入一个指定搜索的目录
        System.out.println("请输入要搜索的路径:");
        String basePath = scanner.next();

//        针对用户输入进行简单判定
        File root = new File(basePath);
        if(!root.isDirectory()) {
//            路径不存在,或者只是一个普通文件,此时无法进行搜索
            System.out.println("输入的目录有误!");
            return;
        }

//        再让用户输入一个要删除的文件名
        System.out.println("请输入要删除的文件名:");
//        此处要使用 next 而不要使用 nextLine
        String nameToDelete = scanner.next();

//        针对指定路径进行扫描,递归操作
//        先从根目录出发(root)
//        先判断下当前这个目录中是否包含需要删除的文件,如果是就删除,不是就跳过下一个
//        如果当前这里包含了一些目录,在针对子目录进行递归
        scanDir(root, nameToDelete);
    }

    private static void scanDir(File root, String nameToDeleter) {
//        打印日志
        System.out.println("[scanDir]: " + root);
//        先列出 root 下的文件和目录
        File[] files = root.listFiles();
        if(files == null) {
//            当前 root 目录下没东西,是一个空目录
//            结束继续递归
            return;
        }
//        遍历当前的列出结果
        for (File f : files) {
            if (f.isDirectory()) {
//                 如果是目录则继续递归
                scanDir(f,nameToDeleter);
            }else {
//                如果是普通文件,则判断是否要删除
                if (f.getName().contains(nameToDeleter)) {
                    System.out.println("确认是否要删除:" + f.getAbsolutePath() + "吗?");
                    String choice = scanner.next();
                    if(choice.equals("y") || choice.equals("Y")) {
                        f.delete();
                        System.out.println("删除成功!");
                    }else {
                        System.out.println("删除取消!");
                    }
                }
            }
        }
    }
}

运行结果:

例题二 

  • 进行普通文件的复制

代码如下:

package io;

import java.io.*;
import java.util.Scanner;

//进行普通文件复制
public class IODemo13 {
    public static void main(String[] args) {
//        输入两个路径
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要拷贝哪个文件: ");
        String srcPath = scanner.next();
        System.out.println("请输入要放到哪个地方:");
        String destPath = scanner.next();

        File srcFile = new File(srcPath);
        if(!srcFile.isFile()) {
//            如果源不是一个文件(是个目录或者不存在)
//            此时就不做任何操作
            System.out.println("您当前输入的源路径有问题!");
            return;
        }
        File destFile = new File(destPath);
        if(destFile.isFile()) {
//            如果目标路径已经存在,认为也不能拷贝
            System.out.println("您当前输入的目标路径有误!");
            return;
        }

//        进行拷贝操作
        try (InputStream inputStream = new FileInputStream(srcFile);
                OutputStream outputStream = new FileOutputStream(srcFile)){

//            进行读文件操作
            while (true) {
                int b = inputStream.read();
                if(b == -1) {
                    break;
                }
//                注意 OutputStream 在写文件时,文件不存在,会自动创建
//                但是 InputStream 不行,如果文件不存在,就会抛异常
                outputStream.write(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

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

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

相关文章

无约束优化方法(optimtool.unconstrain)

import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool >2.4.2无约束优化方法(optimtool.unconstrain) import optimtool.unconstrain as ou ou.[方法名].[函数名]([目标函数], [参数表], [初始迭代点])f ( x ) ∑ …

数值分析学习笔记——绪论【华科B站教程版本】

绪论 数值分析概念 用计算机求解数学问题的数值方法和理论 三大科学研究方法 实验理论分析科学计算(用计算机去辅助研究):数值方法计算机 解析解和近似解 解析解:使用数学方法求出或推导出的结果,往往可以求解出…

数据结构和算法——数据结构

数据结构: 线性结构: 顺序存储方式,顺序表 常见的顺序存储结构有:数组、队列、链表、栈 链式存储方式,链表 队列: 队列可以使用数组结构或者链表结构来存储,先入先出,后进后出。…

OK3568 forlinx系统编译过程及问题汇总

1. 共享文件夹无法加载;通过网上把文件夹加载后,拷贝文件很慢,任务管理器查看发现硬盘读写速率很低。解决办法:重新安装vmware tools。 2. 拷贝Linux源码到虚拟机,解压。 3. 虚拟机基本库安装 forlinxubuntu:~$ sudo…

【图像分割】距离正则化水平集演化及其在图像分割中的应用(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

并网逆变器+VSG控制+预同步控制+电流电流双环控制(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

微服务技术栈-初识Docker

文章目录 前言一、Docker概念二、安装Docker三、Docker服务命令四、Docker镜像和容器Docker镜像相关命令Docker容器相关命令 总结 前言 docker技术风靡全球,它的功能就是将linux容器中的应用代码打包,可以轻松的在服务器之间进行迁移。docker运行程序的过程就是去仓…

办公环境中最常用的邮箱是什么?

随着互联网的普及,电子邮件已经成为了人们日常生活和工作中不可或缺的一部分。为了更好地了解办公邮箱的使用情况,我们对不同群体的办公邮箱使用进行了一次调查。本文将为您详细介绍最常用的办公邮箱及其特点。 一、调查背景 本次调查旨在了解中国各行各…

堆--数据流中第K大元素

如果对于堆不是太认识,请点击:堆的初步认识-CSDN博客 数据流与上述堆--数组中第K大元素-CSDN博客的数组区别: 数据流的数据是动态变化的,数组是写死的 堆--数组中第K大元素-CSDN博客题的小顶堆加一个方法: class MinH…

C语言编程经典100例——1至10例

目录 第 1 例 第 2 例 第 3 例 第 4 例 第 5 例 第 6 例 第 7 例 第 8 例 第 9 例 第 10 例 第 1 例 程序源码: /* 题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?分别都是多少?…

CCF CSP认证 历年题目自练 Day22

CCF CSP认证 历年题目自练 Day22 题目一 试题编号: 201912-1 试题名称: 报数 时间限制: 1.0s 内存限制: 512.0MB 题目分析(个人理解) 每一个人都要报多少个数字,我选择字典存储&#xff0…

Folium 笔记:MarkerCluster

在一张地图上以聚簇的形式显示大量的标记(markers) 举例: import folium from folium.plugins import MarkerCluster import randomm folium.Map(location[45.5236, -122.6750], zoom_start13) # 创建一个基本的地图marker_cluster Marker…

VAE(变分自动编码器)

1.自编码器存在的局限性 自编码器的隐空间的规则性是一个难点,其取决于初始空间中数据的分布、隐空间的大小和编码器的结构。我们很难先验地确保编码器与生成过程兼容并智能地组织隐空间,因此可能导致隐空间的某些点将在解码时给出无意义的内容。注意&am…

剑指offer——JZ76 删除链表中重复的结点 解题思路与具体代码【C++】

一、题目描述与要求 删除链表中重复的结点_牛客题霸_牛客网 (nowcoder.com) 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3-&…

1802_在Linux系统上开发ARM单机片机嵌入式软件

全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 1. 在Linux上也有嵌入式的开发环境,或许还有很多。不过,我现在接触到的大部分还是Windows居多。这一份文件介绍的是一个mbed platform…

springcloudAlibaba之Nacos服务注册源码分析

Nacos服务注册源码分析 Nacos服务注册原理Nacos服务注册怎么做的Nacos服务注册源码解读 带着以上三个问题,进入到今天的源码解读 问题1:Nacos服务注册原理 Nacos首先从bootstrap.yml配置文件中读取我们配置好的nacos配置,这里面一般包括spring.applic…

亚马逊,速卖通,国际站卖家如何找到真实干净的买家账号测评补单

对于卖家而言,测评资源确实是一项宝贵的财富。通过自养号和广告相结合的策略,可以快速有效地提升产品销量、增加转化率以及提高Listing的权重。这是一个很好的方法来优化产品在平台上的表现 添加图片注释,不超过 140 字(可选&…

小谈设计模式(18)—适配器模式

小谈设计模式(18)—适配器模式 专栏介绍专栏地址专栏介绍 适配器模式角色分析目标接口(Target)源接口(Adaptee)适配器(Adapter) 核心思想应用场景Java程序实现输出结果程序分析123 优…

【Python】基于OpenCV人脸追踪、手势识别控制的求生之路FPS游戏操作

【Python】基于OpenCV人脸追踪、手势识别控制的求生之路FPS游戏操作 文章目录 手势识别人脸追踪键盘控制整体代码附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 视频: 基于OpenCV人脸追踪、手势识别控制的求实之路FPS游戏操作 手…

两文学会scala (下)|保姆级别教程(超详细)

上文内容概括: Scala 概述与安装、变量、运算符、流程控制、函数式编程、面向对象 上文链接:两文学会scala (上)|保姆级别教程(超详细)_超爱慢的博客-CSDN博客 目录 第7章 集合 7.1 集合简介…