当前位置: 首页 > backend >正文

使用文件的基本操作和文件内容读写操作实现三个功能

前言

最近在学习文件。今天学完了文件的基本操作以及对文件内容的读写操作。写了三个功能,来巩固知识。

1.扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且用户可以选择是否删除该文件

package File;import java.io.File;
import java.util.Scanner;public class demo13 {public static void main(String[] args) {System.out.println("请输入目录");Scanner scanner=new Scanner(System.in);String directory=scanner.next();//这里直接传入directory,不是传入"directory",没有双引号File file=new File(directory);if(!file.isDirectory()){System.out.println("你输入的不是目录");return;}//走到这里,则输入的一定是目录System.out.println("请输入你要查找的关键文件");Scanner scanner1=new Scanner(System.in);String keyfile=scanner1.next();search_file(file,keyfile);}private static void search_file(File file, String keyfile) {//列出当前目录下的所有文件File[] files=file.listFiles();//考虑当前目录下的文件为空的情况if(files==null){return;}//遍历当前目录下的所有文件for(File file1:files){//分为两种情况,一种还是目录,就还得找文件,一种是文件,那就判断是不是要删除的关键文件if(file1.isDirectory()){search_file(file1,keyfile);}if(file1.isFile()){delfile(file1,keyfile);}}}private static void delfile(File files, String keyfile) {if(files.getName().contains(keyfile)){System.out.println(files.getName());System.out.println("已经找到关键文件"+files.getAbsolutePath()+"是否删除(y/n)");Scanner scanner=new Scanner(System.in);String input=scanner.next();//确保输入大写Y小写y都可以删除if(input.equalsIgnoreCase("y")){files.delete();System.out.println("删除成功");return;}}}
}

运行结果如下

2. 进行普通文件的复制

package File;import java.io.*;
import java.util.Scanner;public class demo14 {public static void main(String[] args) {System.out.println("请输入被复制的文件路径");Scanner scanner=new Scanner(System.in);String file1=scanner.next();File srcfile=new File(file1);if(!srcfile.isFile()){System.out.println("该文件不存在或者这个是目录");return;}System.out.println("请输入要复制文件到那里去的路径");Scanner scanner1=new Scanner(System.in);String file2=scanner1.next();File desfile=new File(file2);//这个desfile的文件可以没有,但是它的目录必须有。if(!desfile.getParentFile().isDirectory()){System.out.println("你没有输入目录");return;}try(InputStream inputStream=new FileInputStream(srcfile);OutputStream outputStream=new FileOutputStream(desfile)){while(true){byte[] data=new byte[1024];int n=inputStream.read(data);if(n==-1){break;}outputStream.write(data,0,n);}}catch (IOException e) {throw new RuntimeException(e);}}
}

运行结果如下 

注意事项如下

3. 扫描指定目录,并找到名称或者内容中包含指定字符的所有普通文件(不包含目录)

package File;import java.io.*;
import java.util.Scanner;public class demo16 {public static void main(String[] args) {System.out.println("请输入你要搜索的目录");Scanner scanner=new Scanner(System.in);String searchpath=scanner.next();File searchdirectory=new File(searchpath);if(!searchdirectory.isDirectory()){System.out.println("你输入的不是目录");return;}System.out.println("请输入你要查找的关键字");Scanner scanner1=new Scanner(System.in);String keyword=scanner1.next();Search(searchdirectory,keyword);}private static void Search(File searchdirectory, String keyword) {File[] files=searchdirectory.listFiles();if(files==null){return;}for(File file:files){if(file.isDirectory()){Search(file,keyword);}if(file.isFile()){Lookup(file,keyword);}}}private static void Lookup(File file, String keyword) {if(file.getName().contains(keyword)){System.out.println("找到了含有关键字的指定文件了"+file.getAbsolutePath());}//使用StringBuffer来记录内容StringBuffer stringBuffer=new StringBuffer();//因为keyword是字符串,就使用Reader了try(Reader reader=new FileReader(file)){while(true){char[] chars=new char[1024];int n=reader.read(chars);if(n==-1){break;}stringBuffer.append(chars,0,n);}} catch (IOException e) {throw new RuntimeException(e);}//找得到keyword,就返回下标,找不到就返回-1if(stringBuffer.indexOf(keyword)>=0){System.out.println("内容包含关键字"+file.getAbsolutePath());}}}

运行结果 

结语 

byebye~ 文件的学习暂时结束

http://www.xdnf.cn/news/13846.html

相关文章:

  • 中间件是微服务架构的支撑工具,微服务是中间件的应用场景之一。
  • 基于PHP的图书商城(vue版)
  • 拨码开关(DIP Switch)原理、参数、选型与应用指南
  • Linux x86_64架构下的四级分页机制详解
  • Cordova移动应用对云端服务器数据库的跨域访问
  • 图像处理与机器学习项目:特征提取、PCA与分类器评估
  • AI基础知识(07):基于 PyTorch 的手写体识别案例手册
  • 一篇文章理解js闭包和作用于原理
  • 【消息队列】——如何使用Actor模型解决并发问题
  • 基于springboot视频及游戏管理系统+源码+文档
  • Python图像处理基础(六)
  • 域名证书自动更新-acme通用版
  • 网络编程之Modbus与HTTP
  • MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析
  • 【在线五子棋对战】五、前端扫盲:html css javascript ajax jquery websocket
  • 应用案例丨一键测量300+工件,QM系列闪测仪批量检测
  • 多模态大语言模型arxiv论文略读(119)
  • 爱普生FC-135R晶振在广域网LoRa设备中的应用
  • 达梦数据库中无效触发器的排查与解决方案指南
  • Java Lambda 表达式与 Stream API 全解析:从基础到进阶
  • 短剧小程序开发:开启碎片化娱乐新视界
  • 第 4 篇:线性回归——机器学习“开山第一斧”,用一条直线洞见AI本质
  • 机器学习-黑马笔记
  • Redis缓存三大难题:穿透、击穿、雪崩
  • 名称 深度学习(监督学习) Iteration 一次 mini-batch 前向+反向传播更新 Epoch 所有数据集训练一遍。这两个概念不一样吗?
  • openEuler 虚拟机中 Shell 脚本实现自动化备份与清理实践
  • (十四)上市企业(协会)实施IPD成功案例分享之——美国建筑师协会AIA
  • MS1824+MS7210 AV/S-Video/VGA/YPbPr/RGB888/BT601、656/BT1120转HD转换器
  • tvm开源程序是适用于 CPU、GPU 和专用加速器的开放式深度学习编译器堆栈
  • window 显示驱动开发-处理视频帧