[英]In java, how to write an object to a file and later on read it from the file and convert it back to the original object in the HDFS?
我试图将double []写入HDFS的文件中,以后,我需要从文件中读取回去并将其转换回double []。 这里有人知道怎么做吗?
谢谢,
ObjectOutputStream将Java对象的原始数据类型和图形写入OutputStream。 可以使用ObjectInputStream读取(重构)对象。 可以通过使用流文件来实现对象的持久存储。 如果流是网络套接字流,则可以在另一台主机上或另一进程中重构对象。
只有支持java.io.Serializable接口的对象才能写入流。 每个可序列化对象的类都经过编码,包括类名称和类签名,对象的字段和数组的值以及从初始对象引用的任何其他对象的关闭。
writeObject方法用于将对象写入流。 任何对象(包括字符串和数组)都是使用writeObject编写的。 可以将多个对象或基元写入流。 必须从相应的ObjectInputstream中以与写入对象相同的类型和顺序读取对象。
还可以使用DataOutput中的适当方法将原始数据类型写入流中。 也可以使用writeUTF方法写入字符串。
ObjectInputStream反序列化原始数据和先前使用ObjectOutputStream写入的对象。
当分别与FileOutputStream和FileInputStream一起使用时,ObjectOutputStream和ObjectInputStream可以为应用程序提供对象图的持久存储。 ObjectInputStream用于恢复先前序列化的那些对象。 其他用途包括使用套接字流在主机之间传递对象,或在远程通信系统中用于编组和解组参数和参数。
ObjectInputStream确保从流创建的图中的所有对象的类型与Java虚拟机中存在的类匹配。 使用标准机制根据需要加载类。
例如,我可以保存密钥生成器以这种方式加密数据:
public static void saveKeyToFile(SecretKey key)
throws FileNotFoundException, IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
"/path/to/mysavedobject"));
oos.writeObject(key);
oos.close();
}
public static SecretKey getKeyFromFile(String dir) throws IOException,
ClassNotFoundException {
if (dir == null) {
dir = "/path/to/mysavedobject";
}
SecretKey key = null;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
dir));
key = (SecretKey) ois.readObject();
ois.close();
return key;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.