簡體   English   中英

Java:將對象數據成員寫入文件的最佳方法是什么?

[英]Java: What is the best way to write object data members to a file?

我在Java項目的中間,要使其正常工作,我需要做的一件事情就是從磁盤寫入和讀取對象。 具體來說,我需要編寫一個代碼,然后再從單個RandomAccessFile加載給定對象的數據成員,並為每個對象添加固定大小的記錄。 該文件表示具有固定大小的磁盤塊的分區。

現在,我要做的是使用ByteBuffer將每個數據成員顯式轉換為字節。 然后,我將它們寫到文件中,以便稍后重新加載數據以實例化具有相同數據值的新對象。 我對這種方法不滿意的是,每個數據成員都必須顯式轉換並放入ByteBuffer ,然后再寫入。 加載恰好相反,將所有字節轉換回去並將它們存儲在適當類型的對象中。

我上面使用的方法似乎過於復雜。 有更好的方法嗎? 我一直在想的事情與我在C ++中可以做的事情類似。 過去,我很容易使用指向對象的指針從固定大小的索引記錄中存儲和重新加載對象數據,然后在使用reinterpret_cast將指針轉換為const char *之后,使用ofstream (或類似方法)從那里寫入所有字節。 。 使用ifstream (或類似的文件)加載文件非常簡單,只需使用index * sizeOf(Foo)計算文件指針偏移量,然后在從文件讀取到內存中之前進行查找。

在Java中是否有類似的方法?

聽起來您正在尋找的是一個ObjectOutputStream ,它允許您將任意(但必須實現Serializable )對象序列化為字節數組(或在這種情況下為流),然后可以將其寫入磁盤。 它本身不能滿足您的隨機訪問需求,但這將是不需要自定義適配器的解決方案的重要組成部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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