Я пытаюсь сохранить данные во внутреннем хранилище своего Android-приложения.Не удалось открыть файл при сохранении данных во внутреннем хранилище
Мой код:
File dir = context.getDir("dataDir", context.MODE_PRIVATE);
File file = new File(dir, "myData");
FileOutputStream fos = null;
ObjectOutputStream oos = null;
fos = new FileOutputStream(file); //Exception here
oos = new ObjectOutputStream(fos);
oos.writeObject(MY_DATA);
oos.flush();
...
...
Но я получил следующее исключение при открытии FileOutputStream
:
java.io.FileNotFoundExceptoin ..., open failed: ENOENT (No such file or directory)
02-19 12:18:23.006: V/MyApp(21019): at libcore.io.IoBridge.open(IoBridge.java:427)
02-19 12:18:23.006: V/MyApp(21019): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
02-19 12:18:23.006: V/MyApp(21019): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
Почему он бросает это исключение? Где я ошибаюсь?
====== UPDATE (раствор) =======
После испробовали все ответы ниже, у меня нет никакой удачи, но в конце концов, я получил проблема решена , Дело заключается в следующем:
У меня есть отдельный класс для настойчивости:
public MyClass{
private Context context;
private File dir;
private File file;
public MyClass(Context context){
this.context = context;
// I used to initialize dir & file instances here
dir = context.getDir("dataDir", context.MODE_PRIVATE);
file = new File(dir, "myData");
}
public void persistData(){
//Seems I have to initiate dir & file in this function, then it works
dir = context.getDir("dataDir", context.MODE_PRIVATE);
file = new File(dir, "myData");
//I used to have the following code without above 2 lines, which is not working
FileOutputStream fos = null;
ObjectOutputStream oos = null;
fos = new FileOutputStream(file); //Exception here
oos = new ObjectOutputStream(fos);
oos.writeObject(MY_DATA);
oos.flush();
...
...
}
}
Я делаю это за настойчивость:
MyClass my = new MyClass(context);
my.persistData();
Я использовал для инициализации dir
& file
в конструкторе, и получить доступ к экземпляр в разных функциях MyClass, но мне кажется, что я должен их инициализировать в каждой функции, тогда он работает. Но не уверен, причина в этом .... если бы кто-нибудь мог объяснить мне.
я думаю ваш файл нуждается в расширении, таком как myData.txt – Saqib
Вы добавили это разрешение –
Это разрешение [не существует] (http://developer.android.com/reference/android/Manifest.permission.html). – PaF