Android Studio Gson 到内部存储
Android Studio Gson to Internal Storage
你好,我是 Android Studio 的初学者,我在将对象保存到文件时遇到问题。
首先,我使用 Gson 库将对象 'Appdata' 转换为 JSON 字符串,然后保存此字符串
在文件中 Appdata.txt
这是我的 InternalStorage.java class
package com.example.fragment.AppData.Logic;
import android.content.Context;
import com.example.fragment.UserInterface.MainActivity;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import com.google.gson.Gson;
public class InternalStorage {
private static InternalStorage instance = null;
private static Gson gson = new Gson();
public boolean saveData(AppData saveData) {
gson.toJson(saveData);
String s = gson.toJson(saveData);
FileOutputStream fOut = null;
try {
fOut = MainActivity.getInstance().getContext().openFileOutput("appdata.txt", Context.MODE_PRIVATE);
fOut.write(s.getBytes());
fOut.close();
} catch (Exception e) {
return false;
}
return true;
}
public AppData loadData() {
FileInputStream fis = null;
try {
fis = MainActivity.getInstance().getContext().openFileInput("appdata.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while (true) {
try {
if (((line = bufferedReader.readLine()) != null))
sb.append(line+"\n");
break;
} catch (IOException e) {
e.printStackTrace();
}
}
String s = sb.toString();
AppData newData = null;
try {
newData = gson.fromJson(s, AppData.class);
} catch (Exception ex) {
ex.printStackTrace();
}
return newData;
}
}
我在Appdata中使用这个方法Class :
public AppData loadData() {
return internalStorage.loadData();
}
public boolean saveAppData() {
return internalStorage.saveData(this);
}
这里我使用了MainActivity中的Appdata。 (我不认为 post 所有 3 Classes 是必需的)
appData.loadData();
//change something in AppData
if(!appData.saveAppData()){
//Inform the User about the not working Save
}
问题是更改未保存。
据我所知,您是 Android 开发的初学者,而不仅仅是 Android 工作室。不要将 Activity 作为单例。关于这个问题。如果你只想保存一个对象 android 提供一个 SharedPreferences
https://developer.android.com/training/data-storage/shared-preferences
但是如果你真的需要创建一个文件,我想你只是忘记了访问权限。
你好,我是 Android Studio 的初学者,我在将对象保存到文件时遇到问题。
首先,我使用 Gson 库将对象 'Appdata' 转换为 JSON 字符串,然后保存此字符串 在文件中 Appdata.txt
这是我的 InternalStorage.java class
package com.example.fragment.AppData.Logic;
import android.content.Context;
import com.example.fragment.UserInterface.MainActivity;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import com.google.gson.Gson;
public class InternalStorage {
private static InternalStorage instance = null;
private static Gson gson = new Gson();
public boolean saveData(AppData saveData) {
gson.toJson(saveData);
String s = gson.toJson(saveData);
FileOutputStream fOut = null;
try {
fOut = MainActivity.getInstance().getContext().openFileOutput("appdata.txt", Context.MODE_PRIVATE);
fOut.write(s.getBytes());
fOut.close();
} catch (Exception e) {
return false;
}
return true;
}
public AppData loadData() {
FileInputStream fis = null;
try {
fis = MainActivity.getInstance().getContext().openFileInput("appdata.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while (true) {
try {
if (((line = bufferedReader.readLine()) != null))
sb.append(line+"\n");
break;
} catch (IOException e) {
e.printStackTrace();
}
}
String s = sb.toString();
AppData newData = null;
try {
newData = gson.fromJson(s, AppData.class);
} catch (Exception ex) {
ex.printStackTrace();
}
return newData;
}
}
我在Appdata中使用这个方法Class :
public AppData loadData() {
return internalStorage.loadData();
}
public boolean saveAppData() {
return internalStorage.saveData(this);
}
这里我使用了MainActivity中的Appdata。 (我不认为 post 所有 3 Classes 是必需的)
appData.loadData();
//change something in AppData
if(!appData.saveAppData()){
//Inform the User about the not working Save
}
问题是更改未保存。
据我所知,您是 Android 开发的初学者,而不仅仅是 Android 工作室。不要将 Activity 作为单例。关于这个问题。如果你只想保存一个对象 android 提供一个 SharedPreferences
https://developer.android.com/training/data-storage/shared-preferences
但是如果你真的需要创建一个文件,我想你只是忘记了访问权限。