FileNotFoundException при попытке прочитать файл, который я написал

1

Я пытаюсь записать объект (pilotRecord) в файл и снова прочитать его. Я понял, что мне не нужно указывать путь, поскольку он является внутренним для моего приложения, поэтому я хочу, чтобы все файлы были удалены, если приложение было удалено.

Здесь мой код:

    fileoutputstream = openFileOutput("test1", Context.MODE_WORLD_WRITEABLE);
    Log.d(this.getClass().getName(), "loadPilotRecord: "+fileoutputstream.toString());
    objectoutputstream = new ObjectOutputStream(fileoutputstream);
    Log.d(this.getClass().getName(), "loadPilotRecord: "+objectoutputstream.toString());
    objectoutputstream.writeObject(pilotRecord);
    objectoutputstream.close();
    fileoutputstream.close();

    fileinputstream = new FileInputStream("test1");
    Log.d(this.getClass().getName(), "loadPilotRecord: "+fileinputstream.toString());
    objectinputstream = new ObjectInputStream(fileinputstream);
    Log.d(this.getClass().getName(), "loadPilotRecord: "+objectinputstream.toString());
    pilotRecord = (PilotRecord)objectinputstream.readObject();
    objectinputstream.close();
    fileinputstream.close();

Моя проблема в том, что я получаю FileNotFoundException в следующей строке в приведенном выше коде: fileinputstream = new FileInputStream ( "test1" ); Я не совсем уверен, как узнать, какой путь он использует, или, может быть, есть более очевидная проблема, которую я просто не вижу. Извините, если это немного принципиально, но я все еще пытаюсь найти свои ноги. Операторы Log.d просто выводят имя класса и идентификатор.

ТИА,

  • Frink
Теги:

2 ответа

2
Лучший ответ

Вы пробовали openfileinput ( "test1" вместо нового FileInputStream ( "test1" )?

  • 0
    Приветствия. Это сработало, спасибо. Не уверен, почему новый FileInputStream ("test1") не работает, хотя он был скопирован из примера
  • 0
    Документация подвержена ошибкам: P Я рад, что это помогло! :)
1

Чтобы узнать, какой путь на самом деле используется, попробуйте:

File f = new File("test1");
Log.d(this.getClass().getName(), f.getAbsolutePath());

Посмотрите на это местоположение, если файл действительно создан - если нет, вы не сможете прочитать.

РЕДАКТИРОВАТЬ: удалил угадать флеш, который был довольно абсурдным

  • 0
    -1 - Вам не нужно очищать поток перед его закрытием. Закрытие сделает флеш. Во всяком случае, это не приведет к FileNotFoundException , так как файл будет создан вызовом конструктора FileOutputStream.
  • 0
    Это вернуло / test1, так что я полагаю, что это относительно приложения, что имеет смысл. Не думайте, что я могу получить доступ к этой файловой области из эмулятора, это позор

Ещё вопросы

Сообщество Overcoder
Наверх
Меню