이 직렬화 가능 클래스를 가지고 있는데, 이진 파일에 문자열의 ArrayList를 저장하는 데 사용합니다.ObjectInputStream이 비어있는 객체를 제공합니다. (읽은 파일이 비어 있지 않습니다.)
public static void saveData(){
ObjectOutput out;
try {
//primero comprobamos si existe el directorio, y si no, lo creamos.
File folder = new File(Environment.getExternalStorageDirectory() + DIRECTORY_NAME);
if(!folder.exists())
folder.mkdirs();
File outFile = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME+"appSaveState.data");
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(SaveState.instance);
out.close();
} catch (Exception e) {e.printStackTrace();}
}
을 그리고 마지막으로, 나는에이 방법을 사용 :
public class SaveState implements Serializable{
public static ArrayList <String> favoriteBusStopNumbers = new ArrayList<String>();
public static SaveState instance=new SaveState();
}
나는이 배열은 내가 저장해야하는 데이터 전체되면 문자열의 ArrayList를 가진 인스턴스를 저장하기 위해이 방법을 사용하고 있습니다 내 응용 프로그램의 초기화 파일을로드하고 이전에 저장된 데이터를 내 SaveState.instance 변수를 채우기 위해 : 내가 데이터를 저장하면 파일이 D의 대상 채우기 제대로 생성되는
public static void loadData(){
ObjectInput in;
try {
File inFile = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME+"appSaveState.data");
in = new ObjectInputStream(new FileInputStream(inFile));
SaveState.instance=(SaveState) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
}
ata, 파일에 디스크 공간이 0KB 이상 있기 때문에 알아. 하지만 내 응용 프로그램을 시작하고 데이터를로드 할 때 SaveState.instance 변수가 빈 ArrayList 문자열을 가져 오므로 뭔가 잘못되고 있습니다. 코드에서 무엇이 잘못 되었습니까?
감사합니다.