簡體   English   中英

Java讀取和寫入文件的對象

[英]Java reading and writing objects to a file

我的任務是創建一個類(RandomAccessObjectFile),它提供對象的讀取和寫入以及在文件中搜索。 這是我第一次使用Java File NIO,並希望確保我正確掌握它。 以下是我在課堂上要求的方法,我正在尋找一些幫助,並更多地了解如何接近本課程的其余部分。

public class RandomAccessObjectFile {

RandomAccessFile raFile;
private RandomAccessObjectFile(String fileName) throws FileNotFoundException {
    raFile = new RandomAccessFile(new File(fileName), "rw");
}

static void create(String fileName) throws IOException {
    Path createTarget = Paths.get(fileName);
    Files.createFile(createTarget);
}

static void delete(String fileName) throws IOException {
    Path deleteTarget = Paths.get(fileName);
    Files.delete(deleteTarget);
}

static RandomAccessObjectFile open(String fileName) {

}

<T> void write(T obj) {
}

<T> T read() {

}

void seek(long location) {
}

long length() {

}

}

提前感謝您的所有幫助!

有關java.nio包的背景知識,您可以從java教程開始 為了將對象序列化為File,我使用了ObjectOutputStream並取得了很好的成功。 我想您可能需要進一步澄清搜索方法應該做什么。 長輸入是文件位置嗎? 這似乎是一件奇怪的事情,因為寫入文件的對象將占用文件中的各種空間。 seek方法的大多數輸入值都是無效的,因為文件中的特定位置可能不代表對象序列化的開始。 但是如果這是解釋輸入參數的方式,那么我認為如果輸入值不代表Object的開頭,該方法應拋出IllegalArgumentException。

這個類的用戶將如何知道如何尋找特定的對象?

也許你還應該存儲一些索引數據。 也許寫入文件的每個對象都需要有一些唯一的ID字段。 然后創建一個映射,將這些ID映射到文件中的位置。 然后,可以使用此映射快速跳轉到正確的文件位置以讀取數據。 只要文件中的數據不需要更改,此方法就可以正常工作。 以這種方式向文件添加新對象應該可以正常工作,但是修改對象或從文件中間刪除對象需要更多工作。

除了PathFiles的瑣碎和冗余使用之外,這里根本沒有NIO,所以很難看出你的問題實際上是什么。 不過我會評論如下:

  1. create()方法是多余的。 構造類的實例時將創建目標文件,否則將引發異常。

  2. 鑒於File.delete()Files.delete()已經存在, delete()方法是多余的。

  3. 整個任務都是徒勞的。 對象流不是隨機訪問。 它們是嚴格的流。 除非您知道在哪里尋求,否則您無法尋找它們,也沒有提供API來獲取該信息。

暫無
暫無

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

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