У меня есть этот класс, чтобы читать/писать сериализуемые объекты:Невозможно прочитать сериализуемые объекты в Android
public class SerializableManager {
/**
* Saves a serializable object.
*
* @param context The application context.
* @param objectToSave The object to save.
* @param fileName The name of the file.
* @param <T> The type of the object.
*/
public static <T extends Serializable> void saveSerializable(Context context, T objectToSave, String fileName) {
try {
FileOutputStream fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(objectToSave);
objectOutputStream.close();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Loads a serializable object.
*
* @param context The application context.
* @param fileName The filename.
* @param <T> The object type.
*
* @return the serializable object.
*/
public static<T extends Serializable> T readSerializable(Context context, String fileName) {
T objectToReturn = null;
try {
FileInputStream fileInputStream = context.openFileInput(fileName);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
objectToReturn = (T) objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return objectToReturn;
}
/**
* Removes a specified file.
*
* @param context The application context.
* @param filename The name of the file.
*/
public static void removeSerializable(Context context, String filename) {
context.deleteFile(filename);
}
}
Проблема заключается в том, что, когда я пытаюсь прочитать объект myUserData из файла, он всегда равен нулю, несмотря на все мои попытки записать его в файл. Код, используемый для записи:
SerializableManager.saveSerializable(this, myUserData, UserData.FILENAME);
кода, используемого для чтения:
UserData myUserData = SerializableManager.readSerializable(this, UserData.FILENAME);
Имя файла:
public static final String FILENAME = "OLA";
Уже tryied для доступа места, где создается файл, но я не могу найти его , Расположение: /data/user/0/com.example.user.cycle_to_shop_v1/files
Честно говоря, я пытаюсь все, но ничего не работает до сих пор. Thx за помощь, Rui Santos
Проверьте, все ли области класс, который вы пытаетесь сериализовать, на самом деле сериализуемы. – nekavally