内部メモリのディレクトリに保存されているアプリケーション固有のファイルがあります。ユーザーがダイアログボックスからこれらのファイルの名前を変更できるようにしたいです。次のコードを使用して、選択したファイルの名前をユーザーごとに変更しています。
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はこれでは機能しないと思いますが、外部メモリでのみ機能します。新しい名前で既存のファイルのコピーを作成し、古いファイルを削除することができる解決策がありますが、それはリソースを消費するので、それをしたくありません。何か間違ったことをしている場合は助けてください。