簡體   English   中英

在Java中,如何將對象寫入文件,然后再從文件中讀取該對象並將其轉換回HDFS中的原始對象?

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

ObjectOutputStream將Java對象的原始數據類型和圖形寫入OutputStream。 可以使用ObjectInputStream讀取(重構)對象。 可以通過使用流文件來實現對象的持久存儲。 如果流是網絡套接字流,則可以在另一台主機上或另一進程中重構對象。

只有支持java.io.Serializable接口的對象才能寫入流。 每個可序列化對象的類都經過編碼,包括類名稱和類簽名,對象的字段和數組的值以及從初始對象引用的任何其他對象的關閉。

writeObject方法用於將對象寫入流。 任何對象(包括字符串和數組)都是使用writeObject編寫的。 可以將多個對象或基元寫入流。 必須從相應的ObjectInputstream中以與寫入對象相同的類型和順序讀取對象。

還可以使用DataOutput中的適當方法將原始數據類型寫入流中。 也可以使用writeUTF方法寫入字符串。

ObjectInputStream

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM