【发布时间】:2013-08-19 22:03:33
【问题描述】:
我确信这是一个相对简单的问题,实际上我认为这可能是 Windows 的问题,而不是 Java 的问题。
我有一种将文件复制到新目录的方法,该方法采用两个 File 对象,一个使用原始路径创建的 File,以及一个使用所需副本路径创建的 File。我确信该方法有效,因为我已经使用它成功地将文件复制到我的桌面上。
但是,使用我实际所需的路径会产生错误:
java.io.FileNotFoundException: PATH (系统找不到路径 指定)
PATH 是我尝试使用的路径。
这是我的猜测: 我正在制作这个程序以在另一台机器上使用。因此,我尝试使用的路径是:
C:\Users\XXXXXX\rest_of_path\filename.file
XXXXXX 是我正在为其编写程序的机器上的主要用户。
此目录存在于我的系统上,但XXXXXX 不是我系统上的用户。所以我猜测是 Windows 导致了一个问题。
我现在正在更改我的代码以使用取决于机器的解决方案,而不是硬编码 (System.getProperty)。
但是,作为 Windows 和 Java 用户,从学术的角度来看,我真的很想知道为什么会出现这个问题。
提前致谢。
编辑:当我的意思是双反斜杠时,不小心使用了正斜杠。为了确保它不是拼写错误,我只是使用 windows 复制了目录,并将其粘贴到我的程序中(然后在反斜杠上加倍)。
编辑: 一些用户提出的建议比我最初尝试做的要干净得多。我不回答这个问题是因为我很好奇它为什么不起作用。
编辑:我使用了上面的解决方案,我对此非常满意。我仍然不知道为什么 Windows 不允许我访问原始路径,但我想我现在真的不在乎。谢谢大家!
【问题讨论】:
-
在您的代码中,您是否使用正斜杠,如上面的文字所示?如果您使用反斜杠,则必须将它们加倍 - 例如,“C:\\Users\\XXXXXXX\\rest_of_path\\filename.file”。
-
如果您使用的是正斜杠,请粘贴相关代码。
-
@AndyThomas 不使用\\,使用File.pathSeparator不是更好吗?
-
您应该使用正斜杠:它们可以在任何地方使用,并且不必在源代码中加倍。哪条路径不存在?你说在Users下存在xxxx,但是你没有那个名字的用户,怎么可能?
-
1.即使你在 Windows 上,在 Java 中总是在文件路径中使用正斜杠——无论如何,java 会负责转换。让生活更轻松 :) 2. 通常,最好使用 System.getProperty("user.home") 找到主目录,然后您不必对其进行硬编码。
标签: java windows file exception