[英]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.