我的Android内部存储存在问题:我的Activity
之一创建了JSONArray
并将其写入名为my_profile.json
的文件。当我记录文件时,一切正常。
在Activity
之前调用此DefaultProfile
(MainActivity
)。
当我在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);