我想基于用户提供的文件名(可能是绝对的或相对的)和依赖于环境的基本目录来构建Java文件对象。对于java.io.File中(文件父,子字符串)的Java文档说以下内容:java.io.File(父,子)不能正常工作
如果孩子路径名字符串是绝对的那么被转换成一个系统相关的方式相对路径名。
这让我觉得,如果我有以下代码:
public class TestClass {
public static void main(String[] args) throws IOException {
File file = new File(new File("C:/Temp"),"C:/Temp/file.txt");
System.out.println(file.getAbsolutePath());
}
}
输出将
C:\Temp\file.txt
,然后我会在业务,因为它不会真正的问题如果用户提供了绝对或相对路径。但事实上,产量
C:\Temp\C:\Temp\file.txt
这意味着我必须找出确切的相对路径(或至少测试不同的选项,以查看是否存在该文件)。我误解了JavaDoc?
子路径名必须是相对路径名。我认为,这个转换谈到了斜杠与反斜杠。就你而言,在继续之前,你必须弄清楚路径是否绝对。 – Thilo
如果您使用(更正确)'“C:\\ Temp \”和'“C:\\ Temp \\ file.txt”'而不是使用前向冲突,那么行为是否相同?我目前没有安装JDK的Windows PC,所以我无法测试它。另外:什么'新的文件(“C:/温度”)。isAbsolute()'打印? –
@Joachim:“C:/ Temp”和“C:\ Temp”都被视为相同。 '新文件(“C:/ Temp”)。isAbsolute()'打印'true'。 – Geert