io流的学习4

字符缓冲流

原理:底层自带了长度为8192的缓冲区提高性能。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class BufferedStringdemo01 {public static void main(String[] args) throws IOException {BufferedReader br=new BufferedReader(new FileReader("F:\\javaEE\\src\\MyCharset\\a.txt"));/*String s = br.readLine();System.out.println(s);*/String line;while((line=br.readLine())!=null){System.out.println(line);}br.close();}
}
package MyCharset;import java.io.*;public class BufferedStringdemo02 {public static void main(String[] args) throws IOException {BufferedWriter bw=new BufferedWriter(new FileWriter("F:\\javaEE\\src\\MyCharset\\a.txt"));bw.write("hhhhhhhh");bw.newLine();bw.write("aaaaaaa");bw.newLine();bw.close();}
}

转换流

是字符流和字节流之间的桥梁。

package myConvertstream;import java.io.*;public class mydemo01 {public static void main(String[] args) throws IOException {InputStreamReader isr=new InputStreamReader(new FileInputStream("myio\\gbkfile.txt"),"GBK") ;int ch;while((ch=isr.read())!=-1){System.out.println((char)ch);}isr.close();}
}
package myConvertstream;import java.io.*;
import java.nio.charset.Charset;public class mydemo01 {public static void main(String[] args) throws IOException {
/*   int ch;while((ch=isr.read())!=-1){System.out.println((char)ch);}isr.close();*/FileReader fr=new FileReader("myio\\gbkfile.txt", Charset.forName("GBK"));int ch;while((ch=fr.read())!=-1){System.out.println((char)ch);}fr.close();}
}
package myConvertstream;import java.io.*;public class mcdemo01 {public static void main(String[] args) throws IOException {OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myio\\b.txt"),"GBK");osw.write("hellohello");osw.close();}
}
package myConvertstream;import java.io.*;public class mcdemo02 {public static void main(String[] args) throws IOException {/*将本地GBK文件转换成UTF-8*///jdk11以前的方案InputStreamReader isr=new InputStreamReader(new FileInputStream("myio\\b.txt"),"GBK");OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("myio\\d.txt"),"UTF-8");int b;while((b=isr.read())!=-1){osw.write(b);}osw.close();isr.close();}
}
package myConvertstream;import java.io.*;public class mcdemo03 {public static void main(String[] args) throws IOException {/*利用字节流读取文件中的数据,每次读一整行,而且不能出现乱码*/FileInputStream fis=new FileInputStream("myio\\a.txt");InputStreamReader isr=new InputStreamReader(fis);BufferedReader br=new BufferedReader(isr);String s = br.readLine();System.out.println(s);br.close();}
}

序列化流

可以把JAVA中的对象写到本地文件中。

import java.io.Serializable;public class Student implements Serializable {private int age;private String name;public Student() {}public Student(int age, String name) {this.age = age;this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student{" +"age=" + age +", name='" + name + '\'' +'}';}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;public class odemo01 {public static void main(String[] args) throws IOException {
Student stu=new Student(24,"karry");ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("myio\\a.txt"));oos.writeObject(stu);oos.close();}
}

反序列化流

可以把序列化到本地文件中的对象,读取到程序中来。

package myConvertstream;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;public class odemo02 {public static void main(String[] args) throws IOException, ClassNotFoundException {ObjectInputStream ois=new ObjectInputStream(new FileInputStream("myio\\a.txt"));Object o = ois.readObject();System.out.println(o);ois.close();}
}
序列化流和反序列化流的细节

1.使用序列化流将对象写到文件中时,需要让Javabean类实现Serializable接口,否则会出现NotSerializableException异常。

2.序列化流写到文件中的数据是不能修改的,一旦修改就无法再次读回来了。

3.序列化对象后,修改了JAVABean类,在次反序列化,会出现版本号异常。

4.给成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程。

打印流

分类:打印流一般是指:PrintStream、PrintWriter两个类

特点:

1.打印流只操作文件目的地,不操作数据源

2.特有的写出方法可以实现,数据原样写出

3.特有的写出方法,可以实现自动刷新,自动换行

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

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

相关文章

毕业设计:日志记录编写(3/17起更新中)

目录 3/171.配置阿里云python加速镜像:2. 安装python3.9版本3. 爬虫技术选择4. 数据抓取和整理5. 难点和挑战 3/241.数据库建表信息2.后续进度安排3. 数据处理和分析 3/17 当前周期目标:构建基本的python环境:运行爬虫程序 1.配置阿里云pytho…

Linux虚拟机的安装部署--尚硅谷笔记

part1 VMware的使用 学习目标 1 熟悉VMware软件的使用 2 可以熟练为虚拟计算机安装Linux操作系统 3 能独立解决安装过程中的常见问题 第一节 VMware的作用 VMware软件的作用 ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传] 第一步,在W…

实战高效RPC方案在嵌入式环境中的应用与揭秘

实战高效RPC方案在嵌入式环境中的应用与揭秘 开篇 在嵌入式系统开发中,大型项目往往采用微服务架构来构建,其核心思想是将一个庞大的单体应用分割成一系列小型、独立、松耦合的服务模块,这些模块可以是以线程或进程形式存在的多个服务单元。…

【Django开发】0到1美多商城项目md教程第3篇:用户注册业务实现,1. 用户注册页面绑定Vue数据【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

YOLOv8:Roboflow公开数据集训练模型

Roboflow公开数据集 Roboflow是一个提供计算机视觉数据集管理和处理工具的平台。虽然Roboflow本身并不创建或策划公开数据集,但它提供了一系列功能,帮助用户组织、预处理、增强和导出计算机视觉数据集。 官方网站:https://universe.roboflow…

学习要不畏难

我突然发现,畏难心是阻碍我成长的最大敌人。事未难,心先难,心比事都难,是我最大的毛病。然而一念由心生,心不难时,则真难事也不再难。很多那些自认为很难的事,硬着头皮做下来的时候,…

学生如何帮老师撰写审稿意见

开头先介绍这篇文章做了什么,达到了什么样的目的、有什么创新点、应用,然后第一段最后一句写上,如果你进行了如下补充,明确表达了相关内容等,就能够接收你的文章(在我们暂时不想接收他的文章的情况下&#…

如何用联合(共用体)union验证系统大小端

一:思路 由联合体的特点,可知上图,char c 和 int i 共用四个字节,假设是小端,则由左到右是低地址到高地址,四个字节的内容如图所示01 00 00 00 代码展示: 如果第一个字节是1,则证明…

阿里云服务器价格购买价格表,2024新版报价查询

2024年腾讯云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

STM32之HAL开发——系统定时器(SysTick)

系统定时器(SysTick)介绍 SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当…

Redis基础命令集详解

目录 1.Redis基础命令 2.Redis的经典案例 2.1 缓存 2.2 计数器 2.3 发布订阅 Redis是一个开源、内存存储的数据结构服务器,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。在Redis中,使用一些基础的命令来操作这些数据结…

蓝桥杯day12刷题日记

P8720 [蓝桥杯 2020 省 B2] 平面切分 思路&#xff1a;首先借用dalao的图解释一下&#xff0c;又多出一条与当前平面任意一条直线都不重合线时&#xff0c;多了的平面是交点数1&#xff0c;所以用双层循环每次往里面加一条直线&#xff0c;计算交点 #include <iostream>…