我是android新手。我创建了SharedPreferences以在播放列表中存储播放列表名称和歌曲名称。现在我必须重命名播放列表。
另一个是:当我删除播放列表时,如何删除SharedPreferences文件(即PlaylistName.xml
)?
答案 0 :(得分:6)
最后,我可以重命名共享首选项文件。
作为参考,在我的上下文中代码是:
String fileName=etlistName.getText().toString();
File f=new File("/data/data/eywa.musicplayer/shared_prefs/"+PlayListName+".xml");
f.renameTo(new File("/data/data/eywa.musicplayer/shared_prefs/"+fileName+".xml"));
SharedPreferences mySharedPreferences=getSharedPreferences("list_of_playlist",Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.remove(PlayListName);
editor.putString(fileName, fileName);
editor.commit();
PlayListName=fileName;
并删除playlistName.xml
:
for (int i=0; i<selectedItems.size();i++)
{//remove the songs names from the playlist
SharedPreferences sp=getSharedPreferences(selectedItems.get(i),Activity.MODE_PRIVATE);
SharedPreferences.Editor ed=sp.edit();
ed.clear();
ed.commit();
//remove the play list name from the list_of_playlist
SharedPreferences.Editor editor = mainPref.edit();
editor.remove(selectedItems.get(i));
//delete .xml file
File f=new File("/data/data/eywa.musicplayer/shared_prefs/"+selectedItems.get(i)+".xml");
if(f.delete())
System.out.println("file deleted")
editor.commit();
}
selectedItems.clear();
答案 1 :(得分:5)
来自“/ data / data / ...”的文件访问不可靠,因为我认为它与所有手机的路径不同(三星设备即不同的AFAIK)。
我更喜欢以下方法,它基本上“复制”旧的共享首选项然后清除它。此方法不会删除旧的共享prefs文件本身,而是删除更多可靠的IMHO。
SharedPreferences settingsOld = context.getSharedPreferences(nameOld, Context.MODE_PRIVATE);
SharedPreferences settingsNew = context.getSharedPreferences(nameNew, Context.MODE_PRIVATE);
SharedPreferences.Editor editorNew = settingsNew.edit();
Map<String, ?> all = settingsOld.getAll();
for (Entry<String, ?> x : all.entrySet()) {
if (x.getValue().getClass().equals(Boolean.class)) editorNew.putBoolean(x.getKey(), (Boolean)x.getValue());
else if (x.getValue().getClass().equals(Float.class)) editorNew.putFloat(x.getKey(), (Float)x.getValue());
else if (x.getValue().getClass().equals(Integer.class)) editorNew.putInt(x.getKey(), (Integer)x.getValue());
else if (x.getValue().getClass().equals(Long.class)) editorNew.putLong(x.getKey(), (Long)x.getValue());
else if (x.getValue().getClass().equals(String.class)) editorNew.putString(x.getKey(), (String)x.getValue());
}
editorNew.commit();
SharedPreferences.Editor editorOld = settingsOld.edit();
editorOld.clear();
editorOld.commit();
答案 2 :(得分:1)
您选择的不是播放列表的最佳存储空间。数据库更适合您的需求。 虽然,您仍然可以使用基本的java io删除sp文件。