繁体   English   中英

namedTo不适用于文件重命名

[英]renameTo not working for renaming files

我正在尝试在应用程序中重命名图像文件。 但是代码不起作用。
基本上,我希望用户单击“重命名”按钮,弹出带有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没有引用现有路径,则将引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM