Как переименовать существующий файл общих настроек в Android - PullRequest
2 голосов
/ 26 апреля 2011

Я новичок в Android. Я создал SharedPreferences для хранения названия списка воспроизведения и названий песен в списке воспроизведения. Теперь я должен переименовать список воспроизведения.

И еще: как мне удалить файл SharedPreferences (т.е. PlaylistName.xml) при удалении списка воспроизведения?

Ответы [ 3 ]

6 голосов
/ 02 мая 2011

Наконец я могу переименовать файл sharedpreference.

Для справки, в моем контексте код:

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();
5 голосов
/ 09 ноября 2012

Доступ к файлу из «/ data / data / ...» не является надежным, поскольку я думаю, что это не тот же путь для всех телефонов (устройства Samsung, а именно разные AFAIK).

Я предпочитаюследующий метод, который в основном «копирует» старые общие префы, а затем очищает его.Этот метод не удаляет сам старый файл с общими преферами, но более релевантен 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(); 
1 голос
/ 26 апреля 2011

Вы выбрали не лучшее хранилище для плейлистов.База данных гораздо больше соответствует вашим потребностям.Хотя вы все равно можете удалить sp-файл, используя базовую версию Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...