gpt4 book ai didi

java - 如何重命名一个文件而不创建另一个文件(Java)

转载 作者:行者123 更新时间:2023-12-01 08:02:58 26 4
gpt4 key购买 nike

我正在寻找一种将文件重命名为字符串的方法。 renameTo 只接受另一个文件作为参数,但我希望它接受一个字符串。那么基本上,我如何在这里实现这个方法?

public static void renameFile(File toBeRenamed, String new_name) {

}

我想将文件“toBeRenamed”重命名为“new_name”。我是否必须创建另一个名为 new_name 的文件,或者是否有一些解决方法?谢谢!

编辑:感谢 Luiggi 的回答。这是新错误的图片:

enter image description here

最佳答案

File class并不代表硬盘中的物理文件,它只是一个抽象表示。创建 File 类的新实例并不意味着您正在创建物理文件。

了解这一点后,您可以使用新的文件重命名文件,而不必担心创建新的物理文件。代码改编自Rename a file using Java :

public static void renameFile(File toBeRenamed, String new_name)
throws IOException {
//need to be in the same path
File fileWithNewName = new File(toBeRenamed.getParent(), new_name);
if (fileWithNewName.exists()) {
throw new IOException("file exists");
}
// Rename file (or directory)
boolean success = toBeRenamed.renameTo(fileWithNewName);
if (!success) {
// File was not successfully renamed
}
}
<小时/>

编辑:根据您的问题更新和此评论:

I took a pic of the error. "Unhandled Exception Type IO Exception"

看起来是以下之一:

  1. 您不知道如何处理已检查的异常。

    为此,您应该将引发 Exception(或子类)的方法包装在 try-catch 语句中:

    String new_name = getFilename(file);
    try {
    renameFiles(files[i], new_name);
    } catch (IOException e) {
    //handle the exception
    //using a basic approach
    e.printStacktrace();
    }

    更多信息:Java Tutorial. Lesson: Exceptions .

  2. 您不希望您的方法抛出已检查的异常。在这种情况下,最好改为抛出未经检查的异常,这样您就不需要手动处理异常。这可以通过抛出 RuntimeException 的新实例或其子类来完成:

    public static void renameFile(File toBeRenamed, String new_name) {
    File fileWithNewName = new File(new_name);
    if (fileWithNewName.exists()) {
    throw new RuntimeException("file exists.");
    }
    // Rename file (or directory)
    boolean success = toBeRenamed.renameTo(fileWithNewName);
    if (!success) {
    // File was not successfully renamed
    }
    }

    更多信息请参见上一节中发布的链接。

  3. 您根本不想抛出异常。在这种情况下,最好至少返回一个值来了解文件是否被准确重命名:

    public static boolean renameFile(File toBeRenamed, String new_name) {
    //need to be in the same path
    File fileWithNewName = new File(toBeRenamed.getParent(), new_name);
    if (fileWithNewName.exists()) {
    return false;
    }
    // Rename file (or directory)
    return toBeRenamed.renameTo(fileWithNewName);
    }

    并相应地更新您的代码:

    String new_name = getFilename(file);
    boolean result = renameFiles(files[i], new_name);
    if (!result) {
    //the file couldn't be renamed
    //notify user about this
    System.out.println("File " + files[i].getName() + " couldn't be updated.");
    }

选择哪一个?完全取决于您的口味。如果我是你,我会使用第三个选项来进行快速的肮脏或学习阶段工作,但对于现实世界的应用程序,我会使用第二个选项,但使用我自己的从 RuntimeException 扩展的自定义异常。

关于java - 如何重命名一个文件而不创建另一个文件(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727648/

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