防止在Android中删除文件

时间:2012-11-26 10:10:16

标签: android

我的应用程序会将一些文件写入存储,应用程序在使用时将使用该文件(如配置)。此配置与时间有关,在需要时将由应用程序替换。

目前,我正在使用Environment.getExternalStorageDirectory()将其写入sdcard。但是当用户使用文件浏览器并且可以删除时,这是可见的。

除了应用程序本身之外,我是否可以阻止文件删除?

我尝试使用Environment.getDataDirectory()但我没有权限在那里写。还有其他方法吗?

4 个答案:

答案 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卡,则无法读取/写入文件