在Android中删除命名的首选项文件

时间:2010-11-05 12:24:46

标签: android preferences sharedpreferences

我可以通过调用Context.getSharedPreferences(String name, int mode)创建一个新的首选项文件,在返回的首选项编辑器中放置一些值,然后提交。但是,当我不再需要时,我没有在API中看到删除创建文件的接口。我尝试过Context.deleteFile(String name),从上面传入相同的name参数,但返回false,表示文件实际上没有被删除。我正在使用MODE_PRIVATE,如果这有所不同。

据我所知,浏览context's implementation of the editor的来源也没有发现任何线索。

有什么想法吗?这里的背景是我允许我的用户保存他们的“当前”首选项的副本,以便他们可以恢复以前保存的设置。当他们不再需要这些设置时,我想删除保存的首选项文件,这样就不会占用空间。目前我能做的最好的是文件上的edit().clear().commit,我相信这将删除大部分内容。但不如删除那么好。

1 个答案:

答案 0 :(得分:2)

  

我尝试过Context.deleteFile(String name),从上面传入同名参数,但返回false,表示文件实际上没有被删除。

那是因为该文件不在该目录中。

  

这里的背景是我允许我的用户保存他们“当前”首选项的副本,以便他们可以恢复以前保存的设置。

你是如何制作副本的?

从支持的API的角度来看,最好的方法是让真正的SharedPreferences成为当前的活动设置,并在您自己的目录中进行备份和恢复到您自己的文件格式。

如果您不愿意朝那个方向前进,那么该文件将是../shared_prefs目录中相对于getFilesDir()的XML文件,因此您可以构造适当的File对象并以此方式删除它。但是,请记住Android可能会在以后更改此位置,甚至更改存储模型,因此您可能会在将来遇到兼容性问题。