【发布时间】:2020-12-09 10:38:55
【问题描述】:
所以我正在创建一个可以选择 pdf 文件的应用程序,并且我想使用用户将在 Edittext 中输入的输入重命名该选定文件。
这是我当前使用的代码,但是当我单击 rename_the_file 按钮时没有任何反应。 (我试图记录这个过程,但也没有运气)
sel_a_file.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK)
.setType("application/pdf")
.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select a file"), 123);
//To avoid using the rename_button when file is not selected
rename_file.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String new_name = new_file_name.getText().toString();
File f1 = new File(String.valueOf(selectedfile), String.valueOf(file_name));
File f2 = new File(String.valueOf(selectedfile), String.valueOf(new_name));
f1.renameTo(f2);
}
});
}
});
这里是 onActivityResult 和我创建的用于向文本视图显示所选文件名的方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 123 && resultCode == RESULT_OK) {
selectedfile = data.getData(); //The uri with the location of the file
file_name.setText(getFileName(selectedfile));
}
}
private String getFileName(Uri selectedfile) {
String path = selectedfile.getPath();
String filename = path.substring(path.lastIndexOf("/") + 1);
String file;
if (filename.indexOf(".") > 0) {
file = filename.substring(0, filename.lastIndexOf("."));
} else {
file = filename;
}
return file;
}
我已经尝试了以下方法来更改选定的文件名,但到目前为止没有运气:
1)
String new_name = new_file_name.getText().toString();
File f1 = new File(String.valueOf(file_name));
File f2 = new File(String.valueOf(new_name));
f1.renameTo(f2);
String new_name = new_file_name.getText().toString();
File f1 = new File(String.valueOf(selectedfile));
File f2 = new File(String.valueOf(new_name));
f1.renameTo(f2);
String new_name = new_file_name.getText().toString();
File f1 = new File(String.valueOf(selectedfile), String.valueOf(file_name));
File f2 = new File(String.valueOf(selectedfile), String.valueOf(new_name));
f1.renameTo(f2);
我确实尝试过这段代码,如果重命名发生与否,则显示吐司。
String new_name = new_file_name.getText().toString();
File new_file = new File(selectedfileDirectory, new_name);
boolean b = selectedfile.renameTo(new_file);
if(b){
Toast.makeText(MainActivity.this, "File renamed", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "Nothing happened", Toast.LENGTH_SHORT).show();
}
吐司显示:什么也没发生。
【问题讨论】:
-
你的目标和编译版本是什么?
-
请不要在一个意图中同时使用 ACTION_PICK 和 ACTION_GET_CONTENT。令人困惑。
-
@blackapps 我不知道该用什么。我只知道 ACTION_GET_Content 带那个窗口来选择文件
-
在重命名之前检查您的文件是否存在,并确保它不是因为范围存储相关问题。
-
文件存在确认,因为我在尝试重命名之前先选择文件。并且由于它在我的 SD 卡中(我也尝试过内部存储)我也添加了该用户权限
标签: android android-file