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方法👇 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 创作高考作文:技术博客指南 🤔✨摘要引言正文内容(详细介绍) 📚💡什么是 GPT-4?高考作文题目分析 ✍️🧐新课标I卷 人类智慧的进步&…...
计算机网络 期末复习(谢希仁版本)第5章
**屏蔽作用:**运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。 10. 端口用一个 16 位端口号进行标志,允许…...
CSAPP Lab01——Data Lab完成思路
陪你把想念的酸拥抱成温暖 陪你把彷徨写出情节来 未来多漫长再漫长还有期待 陪伴你 一直到 故事给说完 ——陪你度过漫长岁月 完整代码见:CSAPP/datalab-handout at main SnowLegend-star/CSAPP (github.com) 01 bitXor 这道题是用~和&计算x^y。 异或是两个…...
将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手
网址 https://github.com/idootop/mi-gpt 一个ts的项目,看样子是个纯前端的项目。 演示的挺有意思的,傻妞应该是魔幻手机的角色。感觉能用这个例子的,最少得三十而立了。 个人感觉这种项目都是整活加炫技,估计我要用上这东西&…...
mongodb总概
一、mongodb概述 mongodb是最流行的nosql数据库,由C语言编写。其功能非常丰富,包括: 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;强大的查询语句…...
【设计模式】策略模式(行为型)⭐⭐
文章目录 1.概念1.1 什么是策略模式1.2 优点与缺点 2.实现方式3. Java 哪些地方用到了策略模式4. Spring 哪些地方用到了策略模式 1.概念 1.1 什么是策略模式 它允许用户在不修改现有对象的代码的情况下向对象添加新的功能;这种模式是通过创建一个包含该对象的包装…...
《软件定义安全》之三:用软件定义的理念做安全
第3章 用软件定义的理念做安全 1.不进则退,传统安全回到“石器时代” 1.1 企业业务和IT基础设施的变化 随着企业办公环境变得便利,以及对降低成本的天然需求,企业始终追求IT集成设施的性价比、灵活性、稳定性和开放性。而云计算、移动办公…...
pdf文件在线压缩网站,pdf文件在线压缩工具软件
在数字化时代的今天,PDF文件已经成为我们日常生活和工作中不可或缺的一部分。然而,随着PDF文件的广泛使用,其文件大小问题也日益凸显。过大的PDF文件不仅占用了大量的存储空间,而且在传输和共享过程中也往往面临诸多不便。因此&am…...
java程序100道21-30
21.定义一个接口A,有一个String的常量值为Java的 s,有void 的print()方法和String 的getInfo()方法,类X是A的实现类,类A的print()方法输出常量s,方法getInfo()返回“Hello!!!” package Exercises.One_Hundred.Demo21; public…...
英伟达SSD视觉算法模型训练、转换与部署
深度学习的训练和推理流程,是先采用高性能图形服务器使用深度学习框架来训练(Training)机器学习算法,研究大量的数据来学习一个特定的场景,完成后得到模型参数,再部署到终端执行机器学习推理(Inference),以训练好的模型从新数据中得出结论。 一般的深度学习项目,训练…...
智能变电站网络报文记录及故障录波分析装置
是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台,采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术,实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…...
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/ 📜 智能合约依赖下载失败的解决方案摘要引言正文内容1. 场景描述 🤔2. 可能原因分析2.1 包不存在或名称错误2.2 网络问题2.3 npm配置错误 3. 解决方案🛠️3.1 …...
Dockerfille解析
用于构建Docker镜像的文本,由一条条指令构成 Docker执行Dockerfile的流程 1. Docker从基础镜像执行一个容器 2. 执行一条指令并对容器进行修改 3. 执行类型Docker commit的命令添加一个新的镜像层 4. Docker再基于新的镜像执行一个新的容器 5. 执行Dockerfile中…...
定个小目标之刷LeetCode热题(14)
了解股票的都知道,只需要选择股票最低价格那天购入,在股票价格与最低价差值最大时卖出即可获取最大收益,总之本题只需要维护两个变量即可,minPrice和maxProfit,收益 prices[i] - minPrice,直接用代码描述如下 class …...
智慧管道管理:油气管道可视化的领先应用
通过图扑油气管道可视化技术,实现实时监控与数据分析,快速识别潜在风险,有效提升管道维护效率和安全性能。...
嵌入式仪器模块:示波器模块和自动化测试软件
示波器模块 • 32 位分辨率 • 125 MSPS 采样率 • 支持单通道/双通道模块选择 • 低速模式可实现实时功率分布和整机功率检测 • 高速模式可实现信号分析和上电时序测量 应用场景 • 抓取并分析波形的周期、幅值、异常信号等指标 • 电源纹波与噪声分析 • 信号模板比…...
组装服务器重装linux系统【idrac集成戴尔远程控制卡】
🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…...
景区ar互动大屏游戏化体验提升营销力度
从20世纪60年代的初步构想,到如今全球范围内无数企业的竞相投入,AR增强现实技术已成为引领科技潮流的重要力量。而在这一浪潮中,中国的AR公司正以其独特的魅力和创新力,崭露头角。 中国的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层…...
oracle dataguard 从库 MRP 进程的状态是 WAIT_FOR_GAP
因主库归档日志未备份直接删除后,从库不能更新,19c版本以上,之前未打补丁,使用 RECOVER STANDBY DATABASE FROM SERVICE PRM180;之后,在执行 alter database recover managed standby database using current logfil…...
【C语言】轻松拿捏-联合体
谢谢观看!希望以下内容帮助到了你,对你起到作用的话,可以一键三连加关注!你们的支持是我更新地动力。 因作者水平有限,有错误还请指出,多多包涵,谢谢! 联合体 一、联合体类型的声明二…...
基于Python定向爬虫技术对微博数据可视化设计与实现
基于Python定向爬虫技术对微博数据可视化设计与实现 Design and Implementation of Weibo Data Visualization Based on Python Web Scraping Techniques 完整下载链接:基于Python定向爬虫技术对微博数据可视化设计与实现 文章目录 基于Python定向爬虫技术对微博数据可视化设…...
【QT5】<总览三> QT常用控件
文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…...
Python中的生成器表达式(generator expression)
Python中的生成器表达式(generator expression)是一种类似于列表解析(list comprehension)的语法结构,但它返回的是一个生成器(generator)对象,而不是一个完整的列表。生成器对象是一…...
Responder工具
简介 Responder是一种网络安全工具,用于嗅探和抓取网络流量中的凭证信息(如用户名、密码等)。它可以在本地网络中创建一个伪造的服务(如HTTP、SMB等),并捕获客户端与该服务的通信中的凭证信息。 Responder工…...
gitblit 环境搭建,服务器迁移记录
下载 Gitblit: http://www.gitblit.com/ JDK:gitblit网站显示需要jdk1.7,这里用的1.8。 Git:到官网下载最新版本安装 1). 分别安装JDK,Git,配置环境变量,下载并解压Gitblit 2). 创建代码仓库 …...
硬盘坏了数据能恢复吗 硬盘数据恢复一般多少钱
在数字化时代,我们的生活和工作离不开电脑和硬盘。然而,硬盘故障是一个常见的问题,可能会导致我们的数据丢失。当我们的硬盘坏了,还能恢复丢失的数据吗?今天我们就一起来探讨关于硬盘坏了数据能恢复吗,硬盘…...
312. 戳气球 Hard
有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和 i 相邻…...
推荐4个好用有趣的软件
MyComic——漫画聚合软件 MyComic是一款界面简洁、分类详尽的漫画阅读软件,专为动漫爱好者设计。它提供了丰富的高清漫画资源,支持在线免费阅读,并且可以一键下载到书架,方便随时离线观看,节省流量。用户可以轻松找到喜…...
网站开发 公司简介/疫情最新数据
while循环的语法格式如下: do while循环的语法格式如下: for循环的基本语法格式如下: 控制循环结构 Java提供了continue和break来控制循环结构。除此之外,return可以结束整个方法,当然也就结束了一次循环。 break用于完…...
做的网站错位怎么办/seo优化一般优化哪些方面
在网络安全行业里面,web安全方向的人相对来说算是占大头,因为web安全初学阶段不像系统底层安全那么枯燥,而且成功hack目标网站的成就感相对也是比较强的。 web安全工程师这个职位在甲方和乙方公司都有,在安全这块,甲方…...
wordpress文章缩进/西安百度竞价开户
2.Spring Data Solr 入门2.1 Spring Data Solr 简介虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr 的应用集成到 Spring 中?可以,Spring Data Solr 就是为了方便 Solr 的开发所研制的一个框架…...
做公司网站成本/b2b推广网站
风险管理 风险管理是指如何在项目或者企业一个肯定有风险的环境里把风险可能造成的不良影响减至最低的管理过程。 风险管理当中包括了对风险的量度、评估和应变策略。理想的风险管理,是一连串排好优先次序的过程,使当中的可以引致最大损失及最可能发生的…...
东莞专业网站推广需要多少钱/宠物美容师宠物美容培训学校
文章目录 diff的基本语法及参数 比较两个文件并排格式输出-u 以合并文件的方式显示不同 补充: 三个文本比较命令: comm: 比较相同的文本,特点是: 如果文本中有空格就无法识别 patch 补丁: 举例: 后记 dif…...
优秀网站建设哪家好/18款禁用软件黄app免费
1背景需求 建设现代有轨电车满足了不断增加的大量公共交通需求,践行公交优先、绿色、低碳出行的交通理念。松江现代有轨电车网络是上海市规划线网的一部分,现阶段网络规划共6条线路,总长90公里,松江先期实施的2条示范线选在交通密…...