我正在寻找一种将文件重命名为字符串的方法。namedTo只接受另一个文件作为参数,但我希望它接受字符串。因此,基本上,如何在这里实现此方法?
public static void renameFile(File toBeRenamed, String new_name) {
}
我想将文件“ toBeRenamed”重命名为“ new_name”。我是否必须制作另一个名为new_name的文件,还是有一些解决方法?谢谢!
编辑:感谢您的答案Luiggi。这是新错误的图片:
本File
类并不代表硬盘驱动器的物理文件,它只是一个抽象表示。创建File
类的新实例并不意味着您正在创建物理文件。
通过了解这一点,您可以使用新文件来重命名文件,File
而不必担心创建新的物理文件。代码改编自使用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
}
}
编辑:根据您的问题更新和对此评论:
我拍了一张错误的照片。“未处理的异常类型IO异常”
看起来其中之一:
您不知道如何处理检查的异常。
为此,您应该将抛出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教程。课程:例外。
您不希望您的方法引发检查异常。在这种情况下,最好抛出未检查的异常,因此您不需要手动处理该异常。这可以通过抛出以下内容的新实例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
}
}
上一节中发布的链接中的更多信息。
您根本不想抛出异常。在这种情况下,最好至少返回一个值来知道文件是否被正确重命名:
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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句