java – 存储在文件中的序列化对象不可读
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 存储在文件中的序列化对象不可读,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2252字,纯文字阅读大概需要4分钟。
内容图文
![java – 存储在文件中的序列化对象不可读](/upload/InfoBanner/zyjiaocheng/702/a3678cf815b3461385b3180648385f6d.jpg)
问题是,当我将序列化对象存储在.txt文件中时,它不是可读形式,并且包含一些随机符号和字母.首先,我想知道背后的原因是什么,然后如何解决这个问题.
好的所以这是我的代码:我要序列化的对象
package serialized;
import java.io.Serializable;
import javax.swing.JOptionPane;
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
String s_name;
int roll_no;
public Student(String s_name, int roll_no){
this.s_name=s_name;
this.roll_no=roll_no;
}
public void getInfo(){
JOptionPane.showMessageDialog(null, "Name: "+s_name+" Roll No: " + roll_no);
}
}
序列化
package serialized;
import java.io.*;
public class StudentWriter {
public static void main(String[] args) {
Student s1=new Student("Asiya", 58);
try{
FileOutputStream fos=new FileOutputStream("abc.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
// Writing Object Info to File
oos.writeObject(s1);
System.out.println("Data has been written to file");
oos.close();
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
反序列化
package serialized;
import java.io.*;
public class StudentReader {
public static void main(String[] args) {
try{
FileInputStream fis=new FileInputStream("abc.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
// Reading Data from File
Student s_data=(Student)ois.readObject();
System.out.println("Data has been read");
s_data.getInfo();
ois.close();
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
输出:
?í sr serialized.Student I roll_noL s_namet Ljava/lang/String;xp :t Asiya
解决方法:
Serialized Objects Stored in File are not readable
除了通过反序列化之外,它们不是可读的.
The problem is that when I store Serialized Object in a .txt file it’s not in readable form and contain some random symbols and letters.
那不是问题.唯一的问题是你错位的期望它应该是人类可读的.在任何地方都没有说明.
First of all I would like to know that what’s the reason behind that
它在Object Serialization Stream Protocol中指定.
and then how to solve this problem.
什么问题?您的代码正常运行. StudentReader提供的对话框中的输出是正确的:
Name: Asiya Roll No: 58
你在这里明确做的是直接查看带有一些实用程序的序列化文件,而不是运行你的StudentReader程序.
这里没有问题需要解决.
注意:
>关闭对象流将关闭基础文件流.您不需要自己关闭文件流.
>序列化对象不是文本,不应保存在.txt文件中.
内容总结
以上是互联网集市为您收集整理的java – 存储在文件中的序列化对象不可读全部内容,希望文章能够帮你解决java – 存储在文件中的序列化对象不可读所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。