我的应用程序会将一些文件写入存储,应用程序在使用时将使用该文件(如配置)。此配置与时间有关,在需要时将由应用程序替换。
目前,我正在使用Environment.getExternalStorageDirectory()将其写入sdcard。但是当用户使用文件浏览器并且可以删除时,这是可见的。
除了应用程序本身之外,我是否可以阻止文件删除?
我尝试使用Environment.getDataDirectory()但我没有权限在那里写。还有其他方法吗?
答案 0 :(得分:1)
是。不要像SD卡那样保存在公共位置,而是将文件写入应用程序私有空间(内部存储),例如:
FileOutputStream fos = openFileOutput("myfile.dat", Context.MODE_PRIVATE);
fos.write( WebnetTools.serializeObject( sec ) );
fos.close();
See docs了解更多详情。请注意,由于有限的空间,它不等同于SD卡。
答案 1 :(得分:0)
如果不要求写入SD卡,您可以write to the phone's internal storage将数据设为您的应用程序。
答案 2 :(得分:0)
感谢您的所有建议。我在android清单中使用了android:sharedUserId,现在可以在应用程序的内存中写入。
由于我的唯一目的是编写文本文件(不涉及共享等),我发现这是最容易实现的。
答案 3 :(得分:-1)
试试这个:
File folder = context.getDir("images", Context.MODE_WORLD_WRITEABLE);
File img = new File(folder, "img_"+widget_id+"_"+position+".png");
try{
FileOutputStream out = new FileOutputStream(img);
b.compress(Bitmap.CompressFormat.PNG, 100, out);
b.recycle();
internal_img = img.getPath();
}catch(Exception e){
e.printStackTrace();
}
getDir在内部存储器上创建一个文件夹,你可以写出你想要的所有内容,因为无法阻止SD卡上的删除。此外,如果卸载SD卡,则无法读取/写入文件