文件IO的基础操作

Java针对文件进行的操作:文件系统操作,File类(file类指定的路径,可以是一个不存在的文件)

文件内容操作     :      流对象

分为两类

(1)字节流     以字节为基本的读写单位的        

二进制文件         InputStream   OutputStream

(2)字符流      以字符为基本的读写单位的               Reader     Writer

文本文件

文件内容的操作:

(1)打开文件      每次打开一个文件,都会消耗指定进度文件描述符表上面的一个顶

(2)关闭文件        文件描述符表,长度是有限的(不同系统,不一样,也是可以配置)

(3) 读文件      硬盘->内存

读文件的时候,还有一个很有用的工具类

Scanner  

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

查找+删除

文件中内容添加:

package io;import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;public class Demo08 {public static void main(String[] args) {try (Reader reader = new FileReader("d:/test.txt")){while(true) {int c = reader.read();if(c == -1){break;}char ch = (char)c;System.out.println(ch);}}catch (IOException e){e.printStackTrace();}}
}
package io;import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;public class Demo09 {public static  void main(String[] args) {try(Writer writer  = new FileWriter("d:/test.txt",true)){writer.write("你好世界你好世界");} catch (IOException e) {e.printStackTrace();}}
}
package io;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;public class Demo10 {public static void main(String[] args) {try(InputStream inputStream = new FileInputStream("d:/test.txt")) {Scanner scanner = new Scanner(inputStream);scanner.next();}catch (IOException e){e.printStackTrace();}}
}

查找文件的关键词

package io;import java.io.File;
import java.util.Scanner;public class Demo11 {public static void main(String[] args) {
//1.输入必要信息Scanner scanner = new Scanner(System.in);System.out.println("请输入要搜索的目录: ");String rootPath = scanner.next();System.out.println("请输入要查询的词: ");String searchWord = scanner.next();//2.构造File对象,检查路径是否合法File rootFile = new File(rootPath);if(!rootFile.isDirectory()) {System.out.println("输入的路径非法!");return;}//3.进行递归搜索searchFile(rootFile,searchWord);
}private static void searchFile(File rootFile,String searchWord) {//1.列出当前目录中有哪些内容File[] files = rootFile.listFiles();if(files == null) {//空目录,直接 返回return;}//2.遍历目录下的每个结果,进行判定for(File f: files) {//System.out.println("当前扫描文件为: "+ f.getAbsolutePath());if(f.isFile()) {//普通文件,就判定文件名是否包含  查询词String fileName = f.getName();if(fileName.contains(searchWord)){//当前文件即为所求System.out.println("找到匹配结果: "+ f.getAbsolutePath());}}else if(f.isDirectory()) {//针对子目录进一步递归searchFile(f,searchWord);}}
}
}

字符类  Reader  Writer  抽象类,不能直接new

 FileInputStream       FileOutputStream

1)打开文件  构造方法(路径)

2)读文件(read)/写文件 (write)

3)关闭文件(close)  能够使用try with resources

给定 路径

给定 查询词

在路径中查找,文件名中包含查询词文件

案例二:复制一个文件 

输入一个路径,表示要被复制的文件

输入另一个路径,表示要复制到的目标目录

package io;import java.io.*;
import java.util.Scanner;
//案例二:复制一个文件
//
//        输入一个路径,表示要被复制的文件
//
//        输入另一个路径,表示要复制到的目标目录
public class Demo012 {public static void main(String[] args) {// 1. 输入必要的信息Scanner scanner = new Scanner(System.in);System.out.println("请输入要复制的文件路径: ");String srcPath = scanner.next();System.out.println("请输入要复制到的目标路径: ");String destPath = scanner.next();// 2. 验证上述路径是否合法.File srcFile = new File(srcPath);if (!srcFile.isFile()) {System.out.println("输入的要复制的文件路径非法!");return;}File destFile = new File(destPath);if (!destFile.getParentFile().isDirectory()) {System.out.println("输入的要复制到的目标路径非法!");return;}// 3. 读写文件try (InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream = new FileOutputStream(destFile)) {while (true) {byte[] bytes = new byte[1024];int n = inputStream.read(bytes);if (n == -1) {break;}outputStream.write(bytes, 0, n);}} catch (IOException e) {throw new RuntimeException(e);}}
}

运行结果:

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

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

相关文章

【模版匹配】基于深度学习

基于深度学习的模版匹配 概述 本报告整理了2024-2025年最新的、可直接使用的模板匹配相关论文、方法和开源代码实现。所有方法都提供了完整的代码实现和预训练模型,可以直接应用到实际项目中。 一、轻量级现代模板匹配框架 1.1 UMatcher - 4M参数的紧凑型模板匹…

CMake进阶:Ninja环境搭建与加速项目构建

目录 1.引入Ninja的原因 2.Ninja 环境搭建(跨平台) 2.1.Linux系统安装 2.2.macOS 系统 2.3.Windows 系统 2.4.源码编译安装(通用方案) 3.Ninja 与构建系统配合:以 CMake 为例 4.加速构建的关键技巧 5.Ninja 与…

开发避坑指南(35):mybaits if标签test条件判断等号=解析异常解决方案

异常信息 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: The expression orderInfo.idList evaluated to a null value.报错语句 <if test"orderInfo.queryFlag ! null and orderInfo.queryFlag sett…

GitCode 疑难问题诊疗:全面指南与解决方案

引言 在软件开发的动态领域中&#xff0c;GitCode 作为一款强大的分布式版本控制系统&#xff0c;已然成为团队协作与项目管理的基石。它赋予开发者高效管理代码版本、轻松实现并行开发以及顺畅协同合作的能力。然而&#xff0c;如同任何复杂的技术工具&#xff0c;在 GitCode…

使用 JS 渲染页面并导出为PDF 常见问题与修复

本文直击两个最常见的导出痛点&#xff0c;并给出可直接落地的诊断 修复方案&#xff08;适用于 html2canvas jsPDF ECharts/自绘 canvas 场景&#xff09;。 问题清单 问题 A&#xff1a;导出后图表模糊&#xff0c;线条与文字不清晰&#xff08;低分辨率&#xff09;。问题…

【Java后端】【可直接落地的 Redis 分布式锁实现】

可直接落地的 Redis 分布式锁实现&#xff1a;包含最小可用版、生产可用版&#xff08;带 Lua 原子解锁、续期“看门狗”、自旋等待、可重入&#xff09;、以及基于注解AOP 的无侵入用法&#xff0c;最后还给出 Redisson 方案对比与踩坑清单。一、设计目标与约束 获取锁&#x…

数据结构 -- 链表--双向链表的特点、操作函数

双向链表的操作函数DouLink.c#include "DouLink.h" #include <stdio.h> #include <stdlib.h> #include <string.h>/*** brief 创建一个空的双向链表* * 动态分配双向链表管理结构的内存&#xff0c;并初始化头指针和节点计数* * return 成功返回指…

Wireshark获取数据传输的码元速率

一、Wireshark的物理层参数 Wireshark主界面可以看到数据发送时刻和长度&#xff1a; 这个时刻是Wireshark完整获取数据包的时刻&#xff0c;实际上就是结束时刻。 需要知道的是&#xff1a; Wireshark工作在数据链路层及以上&#xff0c;它能解码 以太网帧 / IP 包 / TCP…

11.1.3 完善注册登录,实现文件上传和展示

1、完善注册/登录 1. 涉及的数据库表单&#xff1a;user_info 2. 引用MySQL线程池&#xff0c;Redis线程池 3. 完善注册功能 4. 完善登录功能 2.1 涉及的数据库表单&#xff1a;user_info 重新创建数据库 #创建数据库 DROP DATABASE IF EXISTS 0voice_tuchuang;CREATE D…

【Linux文件系统】目录结构

有没有刚进入Linux世界时&#xff0c;对着黑乎乎的终端&#xff0c;输入一个 ls / 后&#xff0c;看着蹦出来的一堆名字 like bin, etc, usr&#xff0c;感觉一头雾水&#xff0c;像是在看天书&#xff1f; 别担心&#xff0c;你不是一个人。Linux的文件系统就像一个超级有条理…

螺旋槽曲面方程的数学建模与偏导数求解

螺旋槽曲面的数学描述 在钻头设计和机械加工领域,螺旋槽的几何建模至关重要。螺旋槽通常由径向截形绕轴做螺旋运动形成,其数学模型可通过参数方程和隐函数方程两种方式描述。 设螺旋槽的径向截形方程为: y=f(z)y = f(z)y=f(z) x=xcx = x_cx=xc​ 其中 xcx_cxc​ 为常数,…

线性回归:机器学习中的基石

在机器学习的众多算法中&#xff0c;线性回归无疑是最基础也是最常被提及的一种。它不仅在统计学中占有重要地位&#xff0c;而且在预测分析和数据建模中也发挥着关键作用。本文将深入探讨线性回归的基本概念、评估指标以及在实际问题中的应用&#xff0c;并通过一个模拟的气象…

编程刷题-资料分发1 图论/DFS

P2097 资料分发 1 题目描述 有一些电脑&#xff0c;一部分电脑有双向数据线连接。 如果一个电脑得到数据&#xff0c;它可以传送到的电脑都可以得到数据。 现在&#xff0c;你有这个数据&#xff0c;问你至少将其输入几台电脑&#xff0c;才能使所有电脑得到数据。 输入格式 第…

RabbitMQ:延时消息(死信交换机、延迟消息插件)

目录一、死信交换机【不推荐】二、延迟消息插件【推荐】2.1 安装插件【Linux】2.2 安装插件【Windows】2.3 如何使用延时消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间之后才收到消息。 延时任务&#xff1a;设置…

动学学深度学习05-深度学习计算

动学学深度学习pytorch 参考地址&#xff1a;https://zh.d2l.ai/ 文章目录动学学深度学习pytorch1-第05章-深度学习计算1. 层&#xff08;Layer&#xff09;与块&#xff08;Block&#xff09;1.1 什么是深度学习中的“层”&#xff1f;1.2 什么是“块”&#xff08;Block&…

智慧工厂烟雾检测:全场景覆盖与精准防控

智慧工厂烟雾检测&#xff1a;构建工业安全的智能防线&#xff08;所有图片均为真实项目案例&#xff09;在工业4.0时代&#xff0c;智慧工厂通过物联网、人工智能与大数据技术的深度融合&#xff0c;实现了生产流程的数字化与智能化。然而&#xff0c;工厂环境中的火灾隐患始终…

@JsonIgnoreProperties注解详解

JsonIgnoreProperties是 Jackson 库中的一个重要注解&#xff0c;用于在 JSON 序列化&#xff08;对象转 JSON&#xff09;和反序列化&#xff08;JSON 转对象&#xff09;过程中​​控制属性的可见性​​。它提供了更高级别的属性忽略能力&#xff0c;特别适合处理复杂场景。一…

红酒数据集预处理实战:缺失值处理的 5 种打开方式,从入门到进阶一步到位

在数据分析与建模流程中&#xff0c;缺失值处理是数据预处理阶段的关键步骤&#xff0c;直接影响后续模型的准确性与稳定性。本文以红酒数据集为研究对象&#xff0c;详细介绍如何通过基础统计方法&#xff08;均值、中位数、众数&#xff09;、完整案例分析&#xff08;CCA&am…

Node.js 开发 JavaScript SDK 包的完整指南(AI)

一、核心概念SDK 包定义 专为特定服务/平台封装的工具库&#xff0c;提供标准化 API 调用、错误处理、类型声明等功能。示例&#xff1a;支付宝 SDK、AWS SDK、微信小程序 SDK。技术栈选择 语言&#xff1a;JavaScript/TypeScript&#xff08;推荐 TS&#xff0c;便于类型提示&…

Redis实战-基于Session实现分布式登录

1.流程分析1.1发送短信验证码提交手机号的时候要进行校验手机号&#xff0c;校验成功才会去生成验证码&#xff0c;将验证码保存到session&#xff0c;发生他把这部分那。1.2短信验证码登录/注册如果提交手机号和验证码之后&#xff0c;校验一致才进行根据手机号查询用户&#…