0

我有两个文件对象oldFilenewFile我想交换相应的文件名。所以我先改名 。我得到 oldFile 的绝对路径并为其附加“.bak”:oldFiletmpFile

String tmpFile = oldFile.getAbsolutePath().toString()+".bak";
oldFile.renameTo(new File(tmpFile));

问题是 tmpFile 包含路径的原始字符串,而File类的构造函数将 '\' 视为转义。因此 tmpFile 可能是"D:\oldfile.java.bak",但是构造函数需要的是

new File("D:\\oldfile.java.bak");

我该如何处理?

4

2 回答 2

3

File 的构造函数不\视为转义。您需要\\字符串文字中转义。字符串文字"\\"包含一个字符:'\'.

String path = "D:\\oldFile";
System.out.println(path); // prints D:\oldFile
File f = new File(path);
System.out.println(f.getAbsolutePath()); // prints D:\oldFile
于 2012-05-04T15:39:10.153 回答
2

你必须逃避转义,.replace("\", "\\")但如果你必须这样做,然后意识到你不必\在 Windows 上使用。Java 支持/一样好,它没有这些问题。你可以这样做replace("\", "/"),它也同样有效。

您还需要阅读并了解如何在 Java 中创建新文件。File.createNewFile()需要调用。仅File使用构造函数创建对象并不会实际在文件系统上创建文件,也不能保证该位置的文件存在。

于 2012-05-04T15:37:11.293 回答