【问题标题】:Can't find specified path when using .. in the middle?中间使用..时找不到指定路径?
【发布时间】:2013-09-25 13:58:25
【问题描述】:

我正在尝试使用这样的路径写入文件:

D:\abcd\efgh\..\ijkl\file.txt

所以我有一个带有这样路径的 File 对象,但是在行中

FileOutputStream fos = new FileOutputStream(f);

我明白了:

java.io.FileNotFoundException: ..\ijkl\file.txt (The system cannot find the path specified)

有人知道这里出了什么问题吗?有没有可能以绝对路径解析路径?

文件对象的初始化:

File f = new File(strImagePath);

strImagePath 由不同的字符串构建而成,看起来与上面显示的路径完全相同。

谢谢!

【问题讨论】:

  • 显示整个代码,而不仅仅是随机行。我们看不到 f 中的内容,而这正是您的问题所在。
  • 您确定不只是在efgh..(父目录的快捷方式)之间缺少反斜杠“\”,即D:\abcd\efgh\..\ijkl\file.txt 吗?
  • f 是一个包含路径“D:\abcd\efgh\..\ijkl\file.txt”的文件对象。我在调试时使用日志条目检查了这一点。
  • 你错了。 'f' 是一个文件对象,它只包含“..\ijkl\file.txt”,正如异常清楚地表明的那样。执行这个程序时你在哪个工作目录下?
  • 没有“Java 的工作目录”之类的东西。我问你执行程序时的哪个工作目录。换句话说,程序运行时看到的系统属性“user.dir”的值。

标签: java file exception io filenotfoundexception


【解决方案1】:

根据您的代码,java 尝试访问文件夹 D:\abcd\ijkl\file.txt,因为您已经放置了 ..\ijkl\file.txt,但在您的系统中该路径上没有任何文件。因此你得到了错误。
编辑:请您尝试使用D:\\abcd\\efgh\\../efgh\\ijkl\\file.txt

【讨论】:

  • file.txt 确实存在于 ijkl 目录中。所以问题不在于缺少文件。
  • ijkl 中是否存在 file.txt?
  • 是的,程序应该删除已经存在的文件。文件在那里,路径是正确的。看来java在解析路径中的“..”时遇到了麻烦。
  • 是的,这就是我上面提到的。当 java 在文件路径中获取 ../ 时,它会将其作为上一级目录的命令。你明白我的意思吗,如果没有,请告诉我。
  • 我不太明白你的意思。 Java 在 D:\abcd\efgh 中运行,而我要删除的文件在 D:\abcd\ijkl 中,所以我认为我必须使用“..”才能到达父目录。
猜你喜欢
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多