android:无法写入文件目录,但可以写入包目录
我正试图将一个对象保存到一个文件中,但该文件没有出现在设备上,我也没有收到异常android:无法写入文件目录,但可以写入包目录,android,serialization,file,Android,Serialization,File,我正试图将一个对象保存到一个文件中,但该文件没有出现在设备上,我也没有收到异常 public static void save(Context ctx) { Log.i("App serialization", "Saving to settings.ser: " + ctx.getFileStreamPath("settings.ser")); FileOutputStream fos = null; ObjectOutputStream out = null;
public static void save(Context ctx) {
Log.i("App serialization", "Saving to settings.ser: " + ctx.getFileStreamPath("settings.ser"));
FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
fos = ctx.openFileOutput("settings.ser", Context.MODE_PRIVATE);
out = new ObjectOutputStream(fos);
out.writeObject(ApplicationData.settings);
out.flush();
out.close();
//fos.close();
Log.i("App serialization", "Finished writing to settings.ser");
}
catch(IOException ex) {
ex.printStackTrace();
Log.e("App serialization", "Could not save to settings.ser");
}
}
如果我改为使用:
try {
fos = new FileOutputStream("/data/data/APP_PACKAGE/settings.ser");
out = new ObjectOutputStream(fos);
它可以工作,我可以看到该文件已在设备上创建
但这并不酷,也不是这样做的方式,因为目录结构将来可能会改变 首先,去掉printStackTrace调用,将IOException对象提供给android.util.Log,例如,e调用中的第三个参数
第二,/data/data/APP_PACKAGE/settings.ser不是第一个代码列表中的文件。它将进入/data/data/APP_PACKAGE/files/settings.ser
第三,/data/data/APP_PACKAGE/settings.ser可能不是Android 2.2上的有效路径,当你的应用程序安装在SD上时。我怀疑这是一个权限问题,所以它没有在logcat或任何东西中吐出任何错误?有警告吗?logcat中没有。我考虑过权限问题,已经卸载了一个重新安装的软件,但仍然一无所获。1-谢谢2和3-我知道这一点;这是我在帖子的最后一句话。如果我尝试在/files子目录中写入,它将不起作用,但是如果我在app-package-dir中写入,它将起作用。尝试构建一个新的模拟器映像或其他东西。您不可能既可以写入您所在的位置,又无法写入文件/。但是,如果您尝试写入文件/的唯一方法是通过上面的save方法,那么可以尝试不同的上下文。例如,如果您使用的上下文来自getApplicationContext,请将其替换为最初调用getApplicationContext的活动或服务。有趣的是,我使用相同的上下文,在代码的其他地方使用openFileOutput和FileOutputStream将文件下载到files/dir。