2015-02-17 2 views
0

Я пытаюсь создать новый файл:Почему я не могу создать файл во внутреннем каталоге?

File file = new File(this.getFilesDir(), "test.tmp");

После этого у меня есть follwing код:

try { 
     fis = new BufferedInputStream(new FileInputStream(file)); 
     ObjectInputStream ois = new ObjectInputStream(fis); 

     ..... other not important code 

И выдает следующее сообщение об ошибке:

android.system.ErrnoException: open failed: ENOENT (No such file or directory)

относительно это линия:

fis = new BufferedInputStream(new FileInputStream(file));

Не File file = new File(this.getFilesDir(), "test.tmp"); предполагается создать файл?

Не могли бы вы дать мне ключ? Я знаю, что здесь отсутствует небольшая, но важная часть, но я не могу ее разглядеть.

ответ

3

Isn't File file = new File(this.getFilesDir(), "test.tmp"); supposed to create the file?

Нет. Он создает объект Java, экземпляр класса File. Это не влияет на файловую систему.

Используйте объект exists() на объекте File, чтобы увидеть, существует ли файл. Или, если по какой-то причине вам нужен пустой файл, вызовите createNewFile() на объект File.

+0

Проблема заключается в том, что 'exists()' возвращает 'true' – Slim

+0

@Slim: Я не вижу, где вы вызываете' exists() '. Я не могу придумать сценарий, в котором 'exists()' будет возвращать 'true', но вы не сможете прочитать файл при нормальных обстоятельствах. Один из сценариев, в которых вы можете столкнуться с проблемами, если вы входите в манифест с «android: sharedUserId», и в этом случае попробуйте удалить и переустановить приложение. – CommonsWare

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