如何重命名我的应用程序的私人文件?

时间:2010-03-15 10:37:34

标签: android

我想重命名使用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但文档说“打开与此Context的应用程序包关联的私有文件以进行编写。创建文件(如果文件尚不存在)。”所以应该在磁盘上创建新文件。  问题:当我尝试从新的重命名文件中读取时,我得到了FileNotFoundException!

谢谢!

2 个答案:

答案 0 :(得分:2)

这是一种重命名存储在应用私人商店中的文件的方法:

// 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 :(得分:1)

为什么不使用File班级的renameTo()方法?