Как переименовать личный файл моего приложения? - PullRequest
1 голос
/ 15 марта 2010

Я хочу переименовать контекстный приватный файл, созданный с помощью openFileOutput (), но я не знаю, как ...

Я пробовал это:

File file = getFileStreamPath(optionsMenuView.getPlaylistName()); // this file already exists

                try {
                    FileOutputStream outStream = openFileOutput(newPlaylistName, Context.MODE_WORLD_READABLE); // i create a new file with the new name
                    outStream.close();
                }
                catch (FileNotFoundException e) {
                    Log.e(TAG, "file not found!");
                    e.printStackTrace();
                } 
                catch (IOException e) {

                    Log.e(TAG, "IO exception");
                    e.printStackTrace();
                }                           

                Log.e(TAG, "rename status: " + file.renameTo(getFileStreamPath(newPlaylistName))); //it return true 

Этот код вызывает исключение FileNotFoundException, но в документации сказано: «Откройте личный файл, связанный с пакетом приложения этого контекста, для записи. Создает файл, если он еще не существует ». поэтому новый файл должен быть создан на диске. Проблема: когда я пытаюсь прочитать из нового переименованного файла, я получил FileNotFoundException!

Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 сентября 2012

Вот метод переименования файла, хранящегося в частном магазине вашего приложения:

// Renames a file stored in the application's private store.
public static void RenameAppFile(Context context, String originalFileName, String newFileName) {
    File originalFile = context.getFileStreamPath(originalFileName);
    File newFile = new File(originalFile.getParent(), newFileName);
    if (newFile.exists()) {
        // Or you could throw here.
        context.deleteFile(newFileName);        
    }
    originalFile.renameTo(newFile);
}
1 голос
/ 15 марта 2010

Почему бы просто не использовать метод renameTo() класса File?

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