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

IO流字符流(FileReader与FileWriter)

目录

FileReader

空参read方法

带参read方法👇

FileWriter

void write(intc)        写出一个字符 

void write(string str)        写出一个字符串 

void write(string str,int off,int len)        写出一个字符串的一部分 

void write(char[] cbuf)        写出一个字符数组

void write(char[] cbuf,int off, int len)        写出字符数组的一部分 

综合练习 

1、拷贝一个文件夹,考虑子文件夹 

2、为了保证文件的安全性,就需要对原始文件进行加密存储,再使用的时候再对其进行解密处理。加密原理:对原始文件中的每一个字节数据进行更改,然后将更改以后的数据存储到新的文件中。解密原理读取加密之后的文件,按照加密的规则反向操作,变成原始文件。 

3、文本文件中有以下的数据:2-1-9-4-7-8将文件中的数据进行排序,变成以下的数据:1-2-4-7-8-9 



FileReader

操作本地文件的字符输入流

创建字符输入流对象👇

public FileReader(File file)                创建字符输入流关联本地文件
public FileReader(string pathname)                创建字符输入流关联本地文件

如果文件不存在,就直接报错。

读取数据👇

public int read()                读取数据,读到未尾返回-1

public int read(char[] buffer)                读取多个数据,读到末尾返回-1

按字节进行读取,遇到中文,一次读多个字节,读取后解码,返回一个整数

读到文件末尾了,read方法返回-1。

释放资源👇

public int close()                释放资源/关流

空参read方法

read():默认也是一个字节一个字节的读取的,如果遇到中文就会一次读取多个

在读取之后,方法的底层还会进行解码并转成十进制。最终把这个十进制作为返回值

package fileReader;import java.io.FileReader;
import java.io.IOException;public class FileReaderDemo1 {public static void main(String[] args) throws IOException {//创建对象FileReader fr=new FileReader("..\\Myio\\a.txt");int ch=0;//循环获取数据while((ch=fr.read())!=-1){System.out.print((char)ch);}//释放资源fr.close();}
}

 

带参read方法👇

read(chars):读取数据,解码,强制类型转换三步合并了,把强转之后的字符放到数组当中

package fileReader;import java.io.FileReader;
import java.io.IOException;public class FileReaderDemo2 {public static void main(String[] args) throws IOException {//创建对象FileReader fr=new FileReader("..\\Myio\\a.txt");char[] ch=new char[2];int len=0;//循环读取数据while ((len=fr.read(ch))!=-1){//把数组中的数据变成字符串再打印System.out.print(new String(ch,0,len));}//释放资源fr.close();}
}

FileWriter

操作本地文件的字符输出流

FileWriter构造方法

public FileWriter(File file)        创建字符输出流关联本地文件
public FileWriter(string pathname)        创建字符输出流关联本地文件
public FileWriter(File file,boolean append)        创建字符输出流关联本地文件,续写

public FileWriter(string pathname,boolean append)  创建字符输出流关联本地文件,续写

FileWriter成员方法

void write(int c)        写出一个字符
void write(string str)        写出一个字符串
void write(string str,int off,int len)        写出一个字符串的一部分
void write(char[] cbuf)        写出一个字符数组
void write(char[] cbuf,int off, int len)        写出字符数组的一部分 

创建字符输出流对象

  • 参数是字符串表示的路径或者File对象都是可以的
  • 如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
  • 如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关

写数据

  • 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符

释放资源

  • 每次使用完流之后都要释放资源 

void write(intc)        写出一个字符 

package fileWriter;import java.io.FileWriter;
import java.io.IOException;public class FileWriterDemo1 {public static void main(String[] args) throws IOException {FileWriter fw=new FileWriter("..\\Myio\\a.txt");fw.write(25105);fw.close();}
}

void write(string str)        写出一个字符串 

package fileWriter;import java.io.FileWriter;
import java.io.IOException;public class FileWriterDemo1 {public static void main(String[] args) throws IOException {FileWriter fw=new FileWriter("..\\Myio\\a.txt");fw.write("努力遇见更好的自己!!!");fw.close();}
}

void write(string str,int off,int len)        写出一个字符串的一部分 

package fileWriter;import java.io.FileWriter;
import java.io.IOException;public class FileWriterDemo1 {public static void main(String[] args) throws IOException {FileWriter fw=new FileWriter("..\\Myio\\a.txt");String str="努力努力再努力";fw.write(str,0,4);fw.close();}
}

void write(char[] cbuf)        写出一个字符数组

package fileWriter;import java.io.FileWriter;
import java.io.IOException;public class FileWriterDemo1 {public static void main(String[] args) throws IOException {FileWriter fw=new FileWriter("..\\Myio\\a.txt",true);char[] ch={'a','b','c','你'};fw.write(ch);fw.close();}
}

这里我打开了续写开关

void write(char[] cbuf,int off, int len)        写出字符数组的一部分 

package fileWriter;import java.io.FileWriter;
import java.io.IOException;public class FileWriterDemo1 {public static void main(String[] args) throws IOException {FileWriter fw=new FileWriter("..\\Myio\\a.txt",true);char[] ch={'a','b','c','你'};fw.write(ch,0,2);fw.close();}
}

 

综合练习 

1、拷贝一个文件夹,考虑子文件夹 

package IOTest;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class ioTset1 {public static void main(String[] args) throws IOException {//拷贝一个文件夹,考虑子文件夹File start=new File("E:\\111");File end=new File("E:\\222");copyFile(start,end);}private static void copyFile(File start, File end) throws IOException {//创建 end 所表示的目录及其所有不存在的父目录end.mkdirs();//进入数据源File[] files1 = start.listFiles();for (File file : files1) {if(file.isFile()){//判断文件拷贝FileInputStream fis=new FileInputStream(file);//这里要输入的地址是end里名字为file的子级路径FileOutputStream fos=new FileOutputStream(new File(end,file.getName()));byte[] bytes=new byte[1024];int len=0;while ((len= fis.read(bytes))!=-1){fos.write(bytes,0,len);}fos.close();fis.close();}else{copyFile(file,new File(end,file.getName()));}}}
}

 

2、为了保证文件的安全性,就需要对原始文件进行加密存储,再使用的时候再对其进行解密处理。
加密原理:
对原始文件中的每一个字节数据进行更改,然后将更改以后的数据存储到新的文件中。
解密原理
读取加密之后的文件,按照加密的规则反向操作,变成原始文件。 

 

package IOTest;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class ioTest2 {public static void main(String[] args) throws IOException {/* 为了保证文件的安全性,就需要对原始文件进行加密存储,再使用的时候再对其进行解密处理。加密原理:对原始文件中的每一个字节数据进行更改,然后将更改以后的数据存储到新的文件中。解密原理读取加密之后的文件,按照加密的规则反向操作,变成原始文件。*///我们可以使用异或,异或两次就等于原来的数据FileInputStream fis=new FileInputStream("..\\Myio\\b.jpg");FileOutputStream fos=new FileOutputStream("..\\Myio\\c.jpg");int len=0;while ((len=fis.read())!=-1){//加密处理fos.write(len^2);}//释放资源fos.close();fis.close();}
}

 可以发现图片已经看不了了

如果想看这个图片的话,就得解密

package IOTest;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class ioTest2_2 {public static void main(String[] args) throws IOException {FileInputStream fis=new FileInputStream("..\\Myio\\c.jpg");FileOutputStream fos=new FileOutputStream("..\\Myio\\d.jpg");int len=0;while ((len=fis.read())!=-1){//解密处理fos.write(len^2);}//释放资源fos.close();fis.close();}}

 一运行就可以看到图片了👇

3、文本文件中有以下的数据:
2-1-9-4-7-8将文件中的数据进行排序,变成以下的数据:1-2-4-7-8-9 

 

package IOTest;import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;public class ioTest3 {public static void main(String[] args) throws IOException {//2-1-9-4-7-8将文件中的数据进行排序,变成以下的数据:1-2-4-7-8-9FileReader fr=new FileReader("..\\Myio\\a.txt");StringBuilder sb=new StringBuilder();int ch=0;while((ch=fr.read())!=-1){sb.append((char)ch);}fr.close();String str = sb.toString();//给数字提取出来,再进行排序String[] arrStr = str.split("-");ArrayList<Integer>list=new ArrayList<>();for (String s : arrStr) {int i=Integer.parseInt(s);list.add(i);}//排序Collections.sort(list);///写出数据FileWriter fw=new FileWriter("..\\Myio\\a.txt");for (int i = 0; i < list.size(); i++) {if(i==list.size()-1){fw.write(list.get(i)+"");}else{fw.write(list.get(i)+"-");}}fw.close();}
}

运行之后得出了想要的 结果

 


IO流的基本流就说到这里啦!!!努力遇见更好的自己!!!

相关文章:

IO流字符流(FileReader与FileWriter)

目录 FileReader 空参read方法 带参read方法&#x1f447; FileWriter void write(intc) 写出一个字符 void write(string str) 写出一个字符串 void write(string str,int off,int len) 写出一个字符串的一部分 void write(char[] cbuf) …...

使用 GPT-4 创作高考作文 2024年

使用 GPT-4 创作高考作文 2024年 使用 GPT-4 创作高考作文&#xff1a;技术博客指南 &#x1f914;✨摘要引言正文内容&#xff08;详细介绍&#xff09; &#x1f4da;&#x1f4a1;什么是 GPT-4&#xff1f;高考作文题目分析 ✍️&#x1f9d0;新课标I卷 人类智慧的进步&…...

计算机网络 期末复习(谢希仁版本)第5章

**屏蔽作用&#xff1a;**运输层向高层用户屏蔽了下面网络核心的细节&#xff08;如网络拓扑、所采用的路由选择协议等&#xff09;&#xff0c;使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。 10. 端口用一个 16 位端口号进行标志&#xff0c;允许…...

CSAPP Lab01——Data Lab完成思路

陪你把想念的酸拥抱成温暖 陪你把彷徨写出情节来 未来多漫长再漫长还有期待 陪伴你 一直到 故事给说完 ——陪你度过漫长岁月 完整代码见&#xff1a;CSAPP/datalab-handout at main SnowLegend-star/CSAPP (github.com) 01 bitXor 这道题是用~和&计算x^y。 异或是两个…...

将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手

网址 https://github.com/idootop/mi-gpt 一个ts的项目&#xff0c;看样子是个纯前端的项目。 演示的挺有意思的&#xff0c;傻妞应该是魔幻手机的角色。感觉能用这个例子的&#xff0c;最少得三十而立了。 个人感觉这种项目都是整活加炫技&#xff0c;估计我要用上这东西&…...

mongodb总概

一、mongodb概述 mongodb是最流行的nosql数据库&#xff0c;由C语言编写。其功能非常丰富&#xff0c;包括: 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;格式自由&#xff0c;数据格式不固定&#xff0c;生产环境下修改结构都可以不影响程序运行;强大的查询语句…...

【设计模式】策略模式(行为型)⭐⭐

文章目录 1.概念1.1 什么是策略模式1.2 优点与缺点 2.实现方式3. Java 哪些地方用到了策略模式4. Spring 哪些地方用到了策略模式 1.概念 1.1 什么是策略模式 它允许用户在不修改现有对象的代码的情况下向对象添加新的功能&#xff1b;这种模式是通过创建一个包含该对象的包装…...

《软件定义安全》之三:用软件定义的理念做安全

第3章 用软件定义的理念做安全 1.不进则退&#xff0c;传统安全回到“石器时代” 1.1 企业业务和IT基础设施的变化 随着企业办公环境变得便利&#xff0c;以及对降低成本的天然需求&#xff0c;企业始终追求IT集成设施的性价比、灵活性、稳定性和开放性。而云计算、移动办公…...

pdf文件在线压缩网站,pdf文件在线压缩工具软件

在数字化时代的今天&#xff0c;PDF文件已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着PDF文件的广泛使用&#xff0c;其文件大小问题也日益凸显。过大的PDF文件不仅占用了大量的存储空间&#xff0c;而且在传输和共享过程中也往往面临诸多不便。因此&am…...

java程序100道21-30

21.定义一个接口A&#xff0c;有一个String的常量值为Java的 s&#xff0c;有void 的print()方法和String 的getInfo()方法&#xff0c;类X是A的实现类&#xff0c;类A的print()方法输出常量s,方法getInfo()返回“Hello!!!” package Exercises.One_Hundred.Demo21; ​ public…...

英伟达SSD视觉算法模型训练、转换与部署

深度学习的训练和推理流程,是先采用高性能图形服务器使用深度学习框架来训练(Training)机器学习算法,研究大量的数据来学习一个特定的场景,完成后得到模型参数,再部署到终端执行机器学习推理(Inference),以训练好的模型从新数据中得出结论。 一般的深度学习项目,训练…...

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台&#xff0c;采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术&#xff0c;实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…...

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/ &#x1f4dc; 智能合约依赖下载失败的解决方案摘要引言正文内容1. 场景描述 &#x1f914;2. 可能原因分析2.1 包不存在或名称错误2.2 网络问题2.3 npm配置错误 3. 解决方案&#x1f6e0;️3.1 …...

Dockerfille解析

用于构建Docker镜像的文本&#xff0c;由一条条指令构成 Docker执行Dockerfile的流程 1. Docker从基础镜像执行一个容器 2. 执行一条指令并对容器进行修改 3. 执行类型Docker commit的命令添加一个新的镜像层 4. Docker再基于新的镜像执行一个新的容器 5. 执行Dockerfile中…...

定个小目标之刷LeetCode热题(14)

了解股票的都知道&#xff0c;只需要选择股票最低价格那天购入&#xff0c;在股票价格与最低价差值最大时卖出即可获取最大收益&#xff0c;总之本题只需要维护两个变量即可&#xff0c;minPrice和maxProfit&#xff0c;收益 prices[i] - minPrice,直接用代码描述如下 class …...

智慧管道管理:油气管道可视化的领先应用

通过图扑油气管道可视化技术&#xff0c;实现实时监控与数据分析&#xff0c;快速识别潜在风险&#xff0c;有效提升管道维护效率和安全性能。...

嵌入式仪器模块:示波器模块和自动化测试软件

示波器模块 • 32 位分辨率 • 125 MSPS 采样率 • 支持单通道/双通道模块选择 • 低速模式可实现实时功率分布和整机功率检测 • 高速模式可实现信号分析和上电时序测量 应用场景 • 抓取并分析波形的周期、幅值、异常信号等指标 • 电源纹波与噪声分析 • 信号模板比…...

组装服务器重装linux系统【idrac集成戴尔远程控制卡】

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…...

景区ar互动大屏游戏化体验提升营销力度

从20世纪60年代的初步构想&#xff0c;到如今全球范围内无数企业的竞相投入&#xff0c;AR增强现实技术已成为引领科技潮流的重要力量。而在这一浪潮中&#xff0c;中国的AR公司正以其独特的魅力和创新力&#xff0c;崭露头角。 中国的AR市场正在迎来前所未有的发展机遇。如今&…...

苍穹外卖笔记-07-菜品管理-增加、删除、修改、查询分页还有菜品起售或停售状态

菜品管理 1 新增菜品1.1 需求分析与设计1.2 代码开发文件上传新增菜品实现 1.3 功能测试 2 菜品分页查询2.1 需求分析和设计2.2 代码开发设计DTO类设计VO类Controller层Service层Mapper层 2.3 功能测试 3 删除菜品3.1 需求分析和设计3.2 代码开发Controller层Service层Mapper层…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...