2010-08-10 2 views
1

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

Вот мой код:

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 = новый FileInputStream («test1»); Я не совсем уверен, как узнать, какой путь он использует, или, может быть, есть более очевидная проблема, которую я просто не вижу. Извините, если это немного принципиально, но я все еще пытаюсь найти свои ноги. Операторы Log.d просто выводят имя класса и идентификатор.

ТИА,

  • Frink

ответ

2

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

+0

Cheers. Это сработало, спасибо. Не знаете, почему новый FileInputStream («test1») не работал, поскольку он был скопирован с примера – FrinkTheBrave

+0

Документация подвержена ошибкам: P Я рад, что это помогло! :) – plagelao

1

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

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

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

EDIT: убрана догадку с румянцем, который был уже довольно нонсенс

+0

-1 - Вы * не * нужно? чтобы закрыть поток, прежде чем закрыть его. Закрытие сделает флеш. В любом случае это не вызовет «FileNotFoundException», потому что файл будет создан вызовом конструктора FileOutputStream. –

+0

Это возвращено/test1, поэтому я полагаю, что это относительно приложение, которое имеет смысл. Не думайте, что я могу получить доступ к этой файловой области из эмулятора, что является позором. – FrinkTheBrave

Смежные вопросы