我想重命名使用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!
谢谢!
答案 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()
方法?