@Gfd

Возникла проблема с сериализацией объектов в android?

Вот методы сериализации:
public static void writeFileSD(String fileName, Object object, Context context) throws IOException {
        // проверяем доступность SD
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            Log.d("", "SD-карта не доступна: " + Environment.getExternalStorageState());
            return;
        }
        
        File patternDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/" + fileName + ".txt");
        patternDirectory.mkdirs();

        FileOutputStream fos = new FileOutputStream(new File(patternDirectory.getAbsolutePath().toString()), true);
        ObjectOutputStream os = new ObjectOutputStream(fos);
        os.writeObject(object);
        os.close();
    }

    public static Object readFileSD(String fileName, Context context) throws IOException, ClassNotFoundException {
        // проверяем доступность SD
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            Log.d("", "SD-карта не доступна: " + Environment.getExternalStorageState());
            return null;
        }
        Object object = null;

        File patternDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/" + fileName + ".txt");
        patternDirectory.mkdirs();

        FileInputStream fis = new FileInputStream(new File(patternDirectory.getAbsolutePath().toString()));
        ObjectInputStream is = new ObjectInputStream(fis);
        object = is.readObject();
        is.close();

        return object;
    }

Выдает java.lang.IllegalStateException

Почему выдает ошибку?
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
@Gfd Автор вопроса
Сделал так:
public static void writeFileSD(String fileName, Object object) throws IOException {
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            return;
        }
        File sdPath = Environment.getExternalStorageDirectory();
        sdPath = new File(sdPath.getAbsolutePath(), DIR_SD);
        sdPath.mkdirs();
        File sdFile = new File(sdPath, fileName);

        FileOutputStream fileOutputStream = new FileOutputStream(sdFile);
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
        objectOutputStream.writeObject(object);
        objectOutputStream.close();

    }

    public static Object readFileSD(String fileName) throws IOException, ClassNotFoundException {
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            return null;
        }
        Object object = null;
        File sdPath = Environment.getExternalStorageDirectory();
        sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);
        File sdFile = new File(sdPath, fileName);

        FileInputStream fileInputStream = new FileInputStream(sdFile);
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        object = objectInputStream.readObject();
        objectInputStream.close();

        return object;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы