Java文件流练习

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

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

public class Main {
    public static void main(String[] args) {
     Scanner scanner=new Scanner(System.in);
     //先让用户输入一个目录
        System.out.println("请输入你要扫描的目录");
        String path=scanner.next();
        File file=new File(path);
        //验证输入合法性
        if(!file.isDirectory()){
            System.out.println("输入文件路径有误");
            return;
        }
        //让用户输入查询关键字
        System.out.println("请输入查询的关键字");
        String word=scanner.next();
        //开始扫描
        scanDir(file,word);
    }

    private static void scanDir(File file, String word) {
        if(file==null)return;
        //先列出file的目录和文件
        File[] path=file.listFiles();
        for (File f:path) {
            //日志
            System.out.println(f.getAbsolutePath());
            if(f.isFile()){
                //是文件,看看有没有包含关键字
                if(f.getName().contains(word)){
                    System.out.println("当前扫描的文件是"+f.getAbsolutePath()+"删除输入Y,不删除输入N");
                    String user=new Scanner(System.in).next();
                    if(user.equals("Y")||user.equals("y")){
                        f.delete();
                        System.out.println("删除成功");
                    }
                    else System.out.println("删除失败");
                }
            }
            else {
                scanDir(f,word);
            }
        }
    }
}

 

2  进行普通文件的复制

 

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

//文件流操作
public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入要复制的文件(绝对路径 OR 相对路径): ");// E:\Test\bbb\222.txt
        String souPath=scanner.next();
        File soutfile=new File(souPath);
        if(soutfile==null)return;
        if(!soutfile.exists()){
            System.out.println("文件不存在,请确认路径是否正确");
            return;
        }
        if(!soutfile.isFile()){
            System.out.println("输入有误");
            return;
        }
        System.out.println("请输入要复制到的目标目录");//E:\Test\aaa\222.txt
        String destPath=scanner.next();
        File destFile=new File(destPath);
        if(destFile.exists()){//不能直接复制到目录下,要输入目录+目标文件名字
            if(destFile.isDirectory()){
                System.out.println("目标路径已经存在,并且是一个目录,请确认路径是否正确");
                return;
            }
        }
        if(destFile.isFile()){
            System.out.println("目标文件已经存在");
            return;
        }
        try(InputStream is = new FileInputStream( soutfile)) {
            try(OutputStream os=new FileOutputStream(destFile)){
                Scanner sc=new Scanner(is);
                PrintWriter writer=new PrintWriter(destFile);
                writer.println(sc);
                writer.flush();
            }
        }
        System.out.println("复制成功");
    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows 10 安装配置WSL2(Ubuntu 20.04)教程

Windows 10 安装配置WSL2(Ubuntu 20.04)教程 一、WSL简介 WSL(Windows Subsystem for Linux)是一个兼容层,允许在Windows 10上原生运行Linux二进制可执行文件。 二、安装WSL2 3.1 传统手动安装 更新系统&#xff…

技术速递|Java on Azure Tooling 3月更新 - Java on Azure 开发工具未来六个月路线图发布

作者:Jialuo Gan - Program Manager, Developer Division At Microsoft 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具的三月更新。在本次更新中,我们将分享未来几个月对 Java on Azure 开发工具的投资。此外,我…

无限多交换机串联,可以将网线无限延长吗?

网线使用时为了网络质量一般不超过100m,那我每隔100m接一个交换机是不是就可以无限延长了? 完全没有问题。 但是慎用无限、永远、永恒这些字眼,“爱你到永远”这句山盟海誓,看看现在的离婚率就知道有多么不靠谱。 但是&#xff…

MySQL数据库精讲001——概述

MySQL数据库精讲001——概述 文章目录 MySQL数据库精讲001——概述1.1 安装1.1.1 版本1.1.2 安装一、下载二、解压三、配置1. 添加环境变量2. 初始化MySQL3. 注册MySQL服务4. 启动MySQL服务5. 修改默认账户密码 四、登录MySQL五、卸载MySQL 1.1.3 连接1.1.4 企业使用方式(了解)…

共享单车(二):项目日志

stdin, stdout, stderr Linux系统下,当一个用户进程被创建时,与之对应的三个数据流(stdin,stdout和stderr,即三个文件)也会被创建。 stdin,标准输入文件,通常对应着终端的键盘。 s…

SpringBoot内容协商机制(就是接受数据的类型如json,xml)

目录 一、基于请求头的内容协商机制 二、基于请求参数的内容协商机制 一、基于请求头的内容协商机制 如果我们的Java服务为浏览器和安卓手机同时提供服务,浏览器期望接受的请求是JSON格式,安卓客户端期望接收的请求是XML格式,这个时候是否需…

Linux Shell字符串截取#与%使用

背景Jenkins需要解析gerrit的commit message中特殊字段的值,比如Depend-On:字段的值 比如commit msg内容如下:用变量msg表示 1. # 号截取, 截取指定字符保留右边的字符串,删除左边的部分。分为#和##两种 1.1 # 号截取&#xff0c…

Linux文件系统/企业文件系统选型/企业常规服务应用建议/软件及软件安装包管理,rpm,yum系列知识--12272字详谈

这里先补充一下上一节的命令: tune2fs 调整或查看ext2/ext3/ext4文件系统的参数(关闭ext4日志功能) 现在已经被淘汰但是企业笔试或者认证考试会存在 dumpe2fs 用于导出ext2,ext4,ext3文件系统信息(文件系统…

自己写的爬虫小案例

网址:aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …

时序分析基础(6)——input delay时序分析

1 简介 FPGA对于外部的时钟以及数据的延时信息是不知道的,在低速时钟且时钟发射沿在数据正中心的时候,一般可以不做约束来直接使用。但是到了高速时钟或者双沿采样或者发射沿和数据对齐的情况下,这时候就需要告诉VIVADO外部的时钟与数据情况来…

[Meachines][Medium]IClean

Main $ nmap -p- -sC -sV 10.10.11.12 -Pn --min-rate 1000 $ echo "10.10.11.12 capiclean.htb">>/etc/hosts 这题可能和python的SSTI有关 $ gobuster dir --url "http://capiclean.htb" --wordlist /usr/share/seclists/Discovery/Web-Content/c…

授权协议OAuth 2.0之通过OIDC实现SSO

写在前面 本文来一起看下OIDC(openid connect)相关内容。 1:什么是OIDC OIDC的全称是openid connect,和OAuth2.0一样,也是属于协议和规范的范畴。OAuth2.0是一种授权协议,即规定了what you can do的内容…

2024 证券从业资格证考试备考资料分享

2024 证券从业资格证考试备考资料分享 2024 年 06月1、2日 证券从业资格考试全国统一考试(统考),预计将于5月初(考前一个月)左右开启报名 有没有小伙伴在准备备考的,不知道大家都准备怎么学习呢&#xff…

前端css中keyframes(关键帧)的简单使用

前端css中keyframes的使用 一、前言二、例子(一)、例子源码1(二)、源码1运行效果1.视频效果2.截图效果 三、结语四、定位日期 一、前言 关键帧keyframes是css动画的一种,主要用于定义动画过程中某一阶段的样式变化&am…

【小白误闯】这可能是对 Tomcat 工作原理解释最详细的文章

脑子一闪而过,当年 V 哥在面试 Java 开发时,被问到让你写一个 Tomcat 服务器,你有什么想法?尼码,面试官摆明是在压工资了,你得逞了,我回答不上来,当时也没研究过 Tomcat 的源码&…

Codeforces Round 940 E. Carousel of Combinations 【威尔逊定理】

题意 给定一个正整数 n n n,定义 C ( i , j ) C(i, j) C(i,j) 为:从 ( 1 , 2 , 3 , . . . , i ) (1,2,3,...,i) (1,2,3,...,i) 中选出 j j j 个不同的数,构成一个圆排列的不同的方案数 求出: ∑ i 1 n ∑ j 1 i ( C ( i ,…

STM32的GPIO控制寄存器开发

寄存器GPIO控制 寄存器地址 寄存器地址计算 某个寄存器地址,由三个参数决定:1、总线基地址(BUS_BASE_ADDR);2,外设基于总线基地址的偏移量(PERIPH_OFFSET);3&#xff…

Linux系统CPU持续飙高,如何排查

若一台服务器CPU使用率持续处于一个高峰值,可能导致如:无法ssh链接、操作卡顿、用户访问超时等问题 1.查看CPU使用情况 top命令常用于分析内存指标使用情况 htop命令更直观于top 当CPU达到70%-80%以上时,使用率已过高需要处理 2.找出CPU占…

C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小

本篇博客介绍C Qt QMainWindow实现无边框窗口,适用于win10/win11系统。 QMainWindow相对于QWidget多了dockedwidget功能,跟多人可能更喜欢用QMainWindow做主窗口,如果不需要dockedwidget功能,QMainWindow与QWidget做主窗口基本无…

一款新型的Linux服务器管理工具

最近发现了一款新型的Linux服务器管理工具,名称叫1Panel,本文跟大伙分享一下。 一. 产品介绍 1Panel 是一个开源的 Linux 服务器运维管理面板,具有丰富的功能,可对服务器和容器进行管理。 产品提供简洁直观的We图形界面&#x…