我正在尝试将double []写入HDFS中的文件,稍后,我需要从文件中读回它并将其转换回double []。这里有人知道怎么做吗?
谢谢,
答案 0 :(得分:3)
ObjectOutputStream写入Java的原始数据类型和图形 对象到OutputStream。可以读取(重构)对象 使用ObjectInputStream。持久存储对象即可 通过使用流的文件完成。如果流是 网络套接字流,对象可以在另一个上重构 主持人或在另一个过程中。
只有支持java.io.Serializable接口的对象才可以 写入溪流。每个可序列化对象的类都是编码的 包括类的名称和签名,值的类 对象的字段和数组,以及任何其他对象的闭包 从初始对象引用。
writeObject方法用于将对象写入流。任何 对象,包括字符串和数组,是用writeObject编写的。 可以将多个对象或基元写入流。该 必须从相应的ObjectInputstream读回对象 与他们写的相同的类型和顺序。
也可以使用以下方法将原始数据类型写入流中 DataOutput中的适当方法。字符串也可以使用 writeUTF方法。
<强> ObjectInputStream 强>
ObjectInputStream对原始数据和对象进行反序列化 以前使用ObjectOutputStream编写。
ObjectOutputStream和ObjectInputStream可以提供应用程序 与a一起使用时对象图的持久存储 FileOutputStream和FileInputStream分别。 ObjectInputStream的 用于恢复以前序列化的对象。其他用途 包括使用套接字流或用于在主机之间传递对象 在远程中编组和解组参数和参数 通讯系统。
ObjectInputStream确保图中所有对象的类型 从流中创建的匹配Java Virtual中存在的类 机。使用标准机制根据需要加载类。
例如,我可以保存密钥生成器以这种方式加密数据:
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;
}