У меня есть определенный файл приложения, который хранится в каталоге во внутренней памяти. Я хочу, чтобы пользователь мог переименовывать эти файлы через диалоговое окно. Я использую следующий код для переименования выбранного файла пользователем:
final File dir = context.getDir(UtilityFuctions.USER_LISTS,
Context.MODE_PRIVATE);
final File myFile = new File(dir, filename);
AlertDialog.Builder fileDialog = new AlertDialog.Builder(context);
fileDialog.setTitle("Rename file");
// Set an EditText view to get user input
final EditText input = new EditText(context);
input.setText(filename);
fileDialog.setView(input);
fileDialog.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String fileName = input.getText().toString();
myFile.renameTo(new File(dir,filename));
UtilityFuctions.createToast(context, "file rename successfully", 0);
}
}
});
fileDialog.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
dialog.dismiss();
}
});
fileDialog.create();
fileDialog.show();
Но приведенный выше код не работает, и файл не получает новое имя. Думаю, renameTo для этого не подойдет, он будет работать только для внешней памяти. У меня есть решение, в котором я могу сделать копию существующего файла с новым именем и удалить старый файл, но это будет потреблять ресурсы, и я не хочу этого делать. Пожалуйста, помогите мне, если я делаю что-то не так.