簡體   English   中英

如何在Java中存儲持久性數據

[英]how to store persistent data in java

我對Java還是很陌生,並且根據我所讀的內容做出了一些假設,所以如果我錯了,請更正我。

我正在制作一個Android應用程序,該程序可從SD卡下載JSON數據,然后可以通過過濾進行搜索。

如果我使用javascript進行此操作,則只需將數據保存到全局變量並隨時訪問。 但是(從我所讀的內容中),java沒有全局變量,並且它所具有的相似之處並不是真正明智的選擇。

因此,我現在要做的是,每次開始新的搜索時,都是從SD卡重新下載所有數據。 但這似乎效率很低。 我已經閱讀了有關Singletons和Builders的一些文章,我想也許這就是我想要的(我真的在這里陷入困境),但是我不太了解在這種情況下如何實現它們,或者如果它們實際上是最好的解決方案。

如果有什么不同,則應用程序運行時數據永遠不會改變。

有人可以給我一些最好的方法嗎? 我真的只想在應用加載時獲取一次數據,然后以后再訪問它。 如果有幫助,這就是我用來從SD卡獲取數據的代碼...

public static JSONArray getArray(){

    FileInputStream stream = null;

    String jString = null;
    File yourFile = new File("/mnt/extSdCard/app/thejson.json");

    try {
        stream = new FileInputStream(yourFile);
        FileChannel fc = stream.getChannel();
        MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
        /* Instead of using default, pass in a decoder. */
        jString = Charset.defaultCharset().decode(bb).toString();

        } catch (FileNotFoundException e) {
        Log.i("err", "file not found");
    }
    catch (IOException e) {
        Log.i("err", "IO exception");
    }
    try {
        stream.close();
        } catch (IOException e) {
        Log.i("1", "IO exception");       
    }
    try {
        names = new JSONArray(jString);
        } catch (JSONException e1) {
            Log.i("err", "IO exception");
    }
    return names;
}     

您可以在Java中以幾種不同的方式保存數據。 如果要在許多不同的類之間共享數據,則可以在一個類中創建一個變量並將其命名為public,也可以創建一個公共的靜態返回方法,該方法返回所需的值(在這種情況下,該變量為private)。 無論類是否包含包含該方法的對象,都可以訪問靜態方法。 存儲數據的另一種方法(盡管我不建議這樣做,但我建議使用靜態方法)是創建一個接口,並使所有使用數據的類都實現該接口。

只要在您的主要活動中將“名稱” JSON Array設置為成員變量,就可以在活動有效期間對其進行訪問。

暫無
暫無

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

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