win7写字板出现乱码-(win7写字板出现乱码怎么办)

来源:191路由网 2022-12-18 14:43:15

win7写字板出现乱码 (win7写字板出现乱码怎么办)

package cn.jd.io;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Date;/* * 对象流: * 1先写出后读取 * 2读取的顺序和写出保持一致 * 3不是所有的对象都可以序列化Serializable */public class 电脑 ObjectTest3 {public static void main(String[] args) throws IOException, ClassNotFoundException {ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("obj.ser")));oos.writeUTF("我太难了");oos.writeInt(18);oos.writeBoolean(false);//加入对象oos.writeObject("希望世界和平");oos.writeObject(new Date());Employee emp=new Employee("小二",400);oos.writeObject(emp);oos.flush();oos.close(); ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("obj.ser"))); String msg=ois.readUTF(); int age=ois.readInt(); boolean flag=ois.readBoolean(); Object str=ois.readObject(); Object date=ois.readObject(); Object employee=ois.readObject(); //接下来我们就将类型还原,这里我们必须加上类型转换 if(str instanceof String) { String strObj=(String)str;// System.out.println(strObj); } if(date instanceof Date) { Date dateObj=(Date)date;// System.out.println(dateObj); } if(employee instanceof Employee) {Employee 电脑empObj=(Employee)employee; System.out.println(empObj.getName()+"-->"+empObj.getSalary()); }// System.out.println(msg); ois.close(); }}

在写入对象文件的过程中,采用了txt文件,发现文件乱码,引发了思考。

首先需要理解好IO流是如何处理文件的。

1.ObjectOutputStream 对Java对象进行序列化处理,处理后的数据,不是文本数据,

所以,该数据保存到文件中,用文本编辑器打开,必然是乱码。

2.输出流,在写入之后,一般都会调用flush方法,将缓冲区的数据刷到IO中去

(当然,楼主的目的地是硬盘文件中)。IO读写,一般情况下,操作系统也会建立一定大小的缓冲区。

3.输出流,在所有写入操作都做完后,应该关闭IO流,调用close方法。

除了可以回收系统资源外,也会强制刷新系统缓冲区中的数据至硬盘。

4.object_in引用对应的是输入流对象,流是流动的,当你上面写入一个对象到文件中后,

下面就只能从那个文件中读取一个对象,再调用读取方法,什么也读不到。

所以,System.out.println(object_in.readObject());的参数应该是li。

5.输入流在读取完成后,也要进行关闭,回收系统资源。

同时一定要记得关闭资源


最后,针对之前说的乱码问题,我上面已经说明了,

各位应该仔细理解Java对象的序列话操作到底干了什么。

它不是简单的把对象属性值写入IO流中,而是按照一定的数据格式写入电脑 的。

而这种格式,不是记事本、写字板、Word等文本编辑器能够识别的,

因为,这些数据,压根就不是文本数据。

只有使用相同版本的Java的ObjectInputStream来进行读取操作。

并且,流数据,在没有缓冲区的情况下,是不能读取重复数据的。

也就是说,如果,我的文本文件中,存放12345这五个字符,

那么,我用流读取一个字符,第一个是字符1,第二次读取,必然是字符2,

不可能还是字符1,除非你用带缓冲区缓的流对象,这样,你在读取前先做标记,

读取完了,可以回退到标记处,重复读取数据,

当然,数据的当前位置和标记位置之间的距离不能超过缓冲区的大小。

视频加载中...


电脑
点击展开全文

相关阅读

手机做u盘装电脑系统-(手机做u盘装电脑系统教程)

手机做u盘装电脑系统(手机做u盘装电脑系统教程)现在车载U盘已经成了车载听歌必不可少的利器了,但是U盘的歌曲总有听厌的时候,如果想要更换歌曲使用电脑是最简单方便的,但是很多车友可能没有电脑。但是我们有手机啊,下面...

2022-12-18

台式电脑开机如何设置u盘启动快捷键-(台式电脑开机如何设置u盘启动快捷键)

台式电脑开机如何设置u盘启动快捷键(台式电脑开机如何设置u盘启动快捷键)使用光盘安装系统已经越来越少,现在取而代之的是更加方便快速的U盘装机方式,要使用U盘装系统,除了制作U教授U盘启动盘之外,还需设置电脑开机从U盘引导启动进入系统安装界面。现在大多数电脑都支持U盘快速启动,只需在开机启动时按下热键选择从U盘启动,下面为大家整理了不同主板以及不同品牌电脑的开机启...

2022-12-18

win10重装后引导失败怎么办-(win10自带重装失败)

win10重装后引导失败怎么办(win10自带重装失败)电脑维修电话:400-6538-598。有网友反映自己的电脑系统重装不了,现在电脑系统重装失败进不去了,不知道电脑系统重装不了是什么原因。其实出现这种情况的原因有多种,下面就教下大家电脑系统重装不了的原因和解决...

2022-12-18

制作u盘系统安装盘可以-(制作u盘系统安装盘可以删除吗)

制作u盘系统安装盘可以(制作u盘系统安装盘可以删除吗)前言Windows系统重装方法特别多,当电脑无法正常开机时有:①使用U盘制作PE系统盘安装;②使用U盘直接制作windows安装盘等。当电脑可以正常开机时有:①直接下载镜像包挂载安装;②使用空余磁盘制作PE系统盘安装;③使用第三方软件进行重...

2022-12-18

新华硕主板认不到u盘-(新华硕主板认不到u盘启动)

新华硕主板认不到u盘(新华硕主板认不到u盘启动)电脑卡顿,或是发生故障?我们最常用的做法就是重装系统。说起重装系统,首先要做的便是制作U盘启动盘了。不久,U盘启动盘制作好了,当你兴高采烈地将启动盘插入电脑,殊不知什么反应都没有,惊慌失措之...

2022-12-18

191路由网 - 192.168.1.1,192.168.0.1无线路由器设置教程

版权声明:本站的文章和图片来自互联网收集,仅做分享之用如有侵权请联系站长,我们将在24小时内删除