问题是,当我将序列化对象存储在.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
存储在文件中的序列化对象不可读
除了通过反序列化之外,它们并不可读。
问题是,当我将序列化对象存储在.txt文件中时,它的格式不是可读的,并且包含一些随机的符号和字母。
那不是问题。唯一的问题是您放错了对它应该易于理解的期望。没有任何规范说明。
首先,我想知道背后的原因是什么
它在对象序列化流协议中指定。
然后如何解决这个问题。
什么问题?您的代码正常工作。弹出的对话框中的输出StudentReader
正确:
Name: Asiya Roll No: 58
您在这里所做的 明确 工作是直接使用某些实用程序查看序列化文件,而不是运行StudentReader
程序。
这里没有问题可以解决。
注意:
我正在使用Apache Flink对流数据执行分析。 我正在使用一个依赖项,其对象需要超过10秒才能创建,因为它在初始化之前读取hdfs中存在的几个文件。 如果我在open方法中初始化对象,我会得到一个超时异常,如果在接收器/平面图的构造函数中,我会得到序列化异常。 目前,我正在使用静态块来初始化其他类中的对象,使用前提条件。在主文件中选中NOTNULL(mgGenerator.mgGenerat
我正在试验Stanford CoreNLP库,我想序列化主要的StanfordCoreNLP管道对象,尽管它抛出了一个java.io.NotSerializableException。 完整故事:每当我运行我的实现时,将管道注释器和分类器加载到内存中大约需要15秒。最终进程的内存约为600MB(很容易小到可以存储在我的机箱中)。我想在第一次创建管道后保存它,这样我就可以在以后将其读入内存。 然而,
我目前正在尝试扩展一个使用Scala和Spark的机器学习应用程序。我正在使用我在Github上找到的Dieterich Lawson之前项目的结构 https://github.com/dieterichlawson/admm 该项目基本上使用SparkContext来构建训练样本块的RDD,然后对每个样本集执行局部计算(例如求解线性系统)。 我遵循同样的方案,但为了进行局部计算,我需要对每个训
我有以下用于序列化查询集的代码: 下面是我的 我需要将其序列化。但它说无法序列化
本文向大家介绍java 中Spark中将对象序列化存储到hdfs,包括了java 中Spark中将对象序列化存储到hdfs的使用技巧和注意事项,需要的朋友参考一下 java 中Spark中将对象序列化存储到hdfs 摘要: Spark应用中经常会遇到这样一个需求: 需要将JAVA对象序列化并存储到HDFS, 尤其是利用MLlib计算出来的一些模型, 存储到hdfs以便模型可以反复利用. 下面的例子
我的问题是,有什么方法可以让我序列化/反序列化一个名为onlinePlayers的列表,该列表引用了“John1”的实例,它也碰巧在List allPlayers中,而不重复“John1”,同时仍然引用那个对象? 我猜当我反序列化allPlayers时,它将创建不同于原始对象的对象,所以onlinePlayers在反序列化后不可能仍然引用相同的对象。我是否应该编写一个自定义方法,在反序列化后将新创