【问题标题】:Java - Unable to find a file path which certainly existsJava - 找不到肯定存在的文件路径
【发布时间】:2013-08-19 22:03:33
【问题描述】:

我确信这是一个相对简单的问题,实际上我认为这可能是 Windows 的问题,而不是 Java 的问题。

我有一种将文件复制到新目录的方法,该方法采用两个 File 对象,一个使用原始路径创建的 File,以及一个使用所需副本路径创建的 File。我确信该方法有效,因为我已经使用它成功地将文件复制到我的桌面上。

但是,使用我实际所需的路径会产生错误:

java.io.FileNotFoundException: PATH (系统找不到路径 指定)

PATH 是我尝试使用的路径。

这是我的猜测: 我正在制作这个程序以在另一台机器上使用。因此,我尝试使用的路径是:

C:\Users\XXXXXX\res​​t_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


【解决方案1】:

在 java 和大多数编程语言中,您不必总是提供文件的确切目录。虽然很高兴看到您用于获取文件的代码,但我将提供如何完成。

我假设您没有使用new File("file.txt"),因为它会从您的程序所在的文件夹中检索文件,并且不需要像C:\...\...\... 这样的完整地址。您当然不想使用整个地址,因为不同的操作系统使用不同的路径,很明显。

您能做的最好的事情就是将您的文件和请求的文件夹放在与您的程序相关的某个位置(无论是类文件还是 .jar 文件)。

但在 Windows 中,您可以确定使用 System.getProperty("...") 您可以检索目录 URL 作为文件/文件夹的相对路径。

此处有关 System.getProperty 的文档:http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

我可能根本没有帮助或回答您的问题。但希望你能找到解决办法。

【讨论】:

  • 感谢您的回复。不幸的是,这个程序用于现有(和过时的)文件系统,所以我不能把它放在与我的程序相关的地方。我可能最终会按照您和用户 Rop 的建议使用 System.getProperty 解决方案。这似乎比我试图做的更干净。但是,我现在很好奇为什么硬编码它不起作用,所以我不会将此标记为解决方案,除非我没有得到与此相关的响应。
猜你喜欢
  • 1970-01-01
  • 2023-01-13
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
相关资源
最近更新 更多