gpt4 book ai didi

java - Path.toFile() 的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 03:11:18 26 4
gpt4 key购买 nike

当我尝试执行 Path.toFile() 时,路径是 C:,由于某种原因,生成的文件默认为当前执行目录。

我在 C: 中的一个目录中执行

Scanner userInput = new Scanner(System.in);   
System.out.println("Enter directory to be scanned: ");//I pass C:
Path inputPath = Paths.get(userInput.nextLine());
inputPath.toFile(); //this was defaulting to current execution directory

然而,当我尝试传递 "C:\\\\" 时,似乎已经解决了问题。为什么?

最佳答案

这就是 C: 在 Windows 上的意思。当用作路径时,它指的是 C 盘上的当前工作目录。 (在 Windows 上,每个驱动器都有不同的当前工作目录。)类似地,C:file.txt 指的是 C 盘当前工作目录中的 file.txt驾驶。如果您想引用驱动器的根目录,那就是 C:\

但是,调用 toFile()不应该造成这种情况,如文档所述:

Where this Path is associated with the default provider, then this method is equivalent to returning a File object constructed with the String representation of this path.

当我运行这个程序时,这个方法似乎工作正常:

Path p = Paths.get("C:");
File f = p.toFile();
System.out.println(p);
System.out.println(f);

两行的输出都是C:

如果您得到的 File 对象的字符串表示与 Path 的字符串表示不同,那么这是您的 Java 版本中的错误.

否则,这是一个误解,toFile() 方法正确地返回了一个引用C:File 对象。但是当您使用对象访问事物时,它将访问当前工作目录。使用 Path 对象也是如此。无论您使用哪个对象,它的行为都是正确的。

关于java - Path.toFile() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199400/

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