gpt4 book ai didi

java - renameTo 不适用于重命名文件

转载 作者:行者123 更新时间:2023-11-29 09:27:20 26 4
gpt4 key购买 nike

我正在尝试重命名我的应用程序中的图像文件。但是代码不起作用。
基本上,我希望用户单击“重命名”按钮,弹出一个带有 editText 的警告对话框,用户输入图像的新名称,然后选择“重命名”选项。这应该重命名文件,但它什么也不做。我也没有收到任何错误或异常。但是警告,'File.renameTo()' 的结果被忽略。
我该如何解决?

buttonRename.setOnClickListener(
new View.OnClickListener(){
public void onClick(View view){
AlertDialog.Builder builder2 = new AlertDialog.Builder(PhotosActivity.this);
builder2.setMessage("Rename File");
final EditText input = new EditText(PhotosActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
input.setLayoutParams(lp);
builder2.setView(input);
builder2.setPositiveButton(
"Rename",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {

File oldName =new File(al_images.get(int_position).getAl_imagepath().get(position));
String string = input.getText().toString();
boolean success = oldName.renameTo(new File(string));
if(!success){
Log.v(TAG,"not renamed");
}

}
});

builder2.setNegativeButton(
"Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});

AlertDialog alert12 = builder2.create();
alert12.show();

}
}
);

最佳答案

在尝试重命名文件之前,您应该首先检查该文件是否存在,因为:File.renameTo() 不会抛出任何异常,即使调用的对象目标引用了不存在的路径。

if (!originalFile.exists()){
throw new RuntimeException("file " + originalFile + " should exist");
}

更好的选择是使用 java.nio API 来操作文件,因为它提供与 File 相同的功能以及更多功能,而且执行起来通常也更好。

你可以这样写:

Files.move(originalPath, targetPath);

现在,如果 originalPath 不引用现有路径,则会抛出异常。

关于java - renameTo 不适用于重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48369759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com