Android内部存储 - 文件已满,然后从Activity清空到另一个

时间:2018-03-04 06:21:19

标签: android json file internal-storage

我的Android内部存储存在问题:我的Activity之一创建了JSONArray并将其写入名为my_profile.json的文件。当我记录文件时,一切正常。

Activity之前调用此DefaultProfileMainActivity)。

当我在MainActivity中记录文件时,一切都很好,文件存在,并且充满了我的数据。

但是这里出现了奇怪的部分,当我尝试从其他Activities读取它时,它是空的,但文件存在:

String[] files = fileList();
        for (String file : files) {
            Log.e("OtherActivity", file);
        }

这是Log.d

D/MainActivity: my_profile.json
D/WeekActivity: my_profile: []

现在更奇怪的是,当我重新启动应用程序时,即使在MainActivity中文件也是空的。

以下是我用来读取/写入此文件的util static中的Class方法:

读:

static public JSONArray loadJsonArray(File path, String file) {
        String jsonString;
        JSONArray jsonArray;
        try {
            InputStream is = new FileInputStream(path.getPath() + file);
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            jsonString = new String(buffer, "UTF-8");
            jsonArray = new JSONArray(jsonString);
        }
        catch (IOException | JSONException e) {
            if (e instanceof FileNotFoundException) {
                return new JSONArray();
            }
            getStackTraceString(e);
            return null;
        }
        return jsonArray;
    }

呼叫:

JSONArray profile = JsonFileUtil.loadJsonArray(getFilesDir(), "/my_profile.json");

写:

static public void writeToJson(File path, String file, JSONArray jsonArray) {
    Writer output;
    File outFile = new File(path, file);
    if (jsonArray == null) {
        jsonArray = new JSONArray();
    }
    try {
        outFile.createNewFile();
        output = new BufferedWriter(new FileWriter(outFile));
        output.write(jsonArray.toString(2));
        output.close();
    }
    catch (IOException | JSONException e) {
        getStackTraceString(e);
    }
}

呼叫:

JsonFileUtil.writeToJson(getFilesDir(), "/my_profile.json", profile);

0 个答案:

没有答案