【问题标题】:getAbsolutePath ignoring certain foldersgetAbsolutePath 忽略某些文件夹
【发布时间】:2016-09-01 21:50:29
【问题描述】:

我的问题是getAbsolutePath 忽略了我要查找的文件周围的某些文件夹。我要做的是仅使用文件名获取文件的文件路径。这是我正在使用的代码:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class OpenFile {
    public static void main(String[] args) throws IOException{
        File file = new File("Point.java");
        String path = file.getCanonicalPath();

        try {
            Desktop.getDesktop().open(new File(path));
        } catch(IOException e) {
            System.out.println("not work");
        }
    }
}

我收到此错误:

Exception in thread "main" java.lang.IllegalArgumentException: The file: /Users/default/Desktop/Eclipse/TreeThing/Point.java doesn't exist.
at java.awt.Desktop.checkFileValidation(Desktop.java:210)
at java.awt.Desktop.open(Desktop.java:270)
at ForkBomb.main(ForkBomb.java:11)

真正的文件路径是/Users/default/Desktop/Eclipse/TreeThing/src/Point.java,但是因为目录 src 被忽略了,所以程序不会运行。我该如何解决?

【问题讨论】:

  • 它是相对于当前工作目录打开的,显然是TreeThing,而不是TreeThing/src
  • 我自己追踪了文件路径,它位于一个名为 src 的文件夹中,该文件夹位于 TreeThing 中。
  • 也许你应该再次阅读getCanonicalPath() 的javadoc(或第一次?),看看它实际上做了什么。提示:它不是文件搜索方法。
  • Java 不是脚本语言。您并没有真正运行源文件。

标签: java filepath


【解决方案1】:

您似乎正在从 /Users/default/Desktop/Eclipse/TreeThing 目录运行代码。这将为您的应用程序设置“当前工作目录”。

因此,当您实例化一个没有路径的File 对象时,代码假定它位于当前工作目录中。

不会为您执行搜索。

如果要引用现有的 Point.java,请使用:

File file = new File("src/Point.java");

... 或:

File file = new File("/Users/default/Desktop/Eclipse/TreeThing/src/Point.java");

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 2011-06-20
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2018-05-30
    相关资源
    最近更新 更多