【问题标题】:Finding pathway of a text file查找文本文件的路径
【发布时间】:2018-10-23 13:26:02
【问题描述】:

我知道在 JAVA 中读取文件时,有两种方法可以为文件编写路径。

//1st way
    scanner = new Scanner(new File("C:\\Users\\User\\IdeaProjects\\EDSS\\src\\file\\JobList.txt"));
//2nd way
    scanner = new Scanner(new File("src/file/JobList.txt"));

但是当我尝试使用 IntelliJ 中的第一种方式通过称为“构建工件”的方式将我的格式从 .java 转换为 .exe(Application) 时,我可以顺利打开应用程序。但是,使用第二种方式,我无法打开应用程序,我发现这是因为路径。第一种方式只允许我在我的计算机上运行应用程序。如果我使用不同的用户名将文件复制到朋友的笔记本电脑,例如(“C:\Users\Bernard...”),应用程序也无法工作,我必须手动修改代码中的路径才能运行应用程序。 有什么方法可以在不手动输入完整长度的情况下准确搜索路径,同时应用程序(.exe)可以使用它?

【问题讨论】:

    标签: java file filenames


    【解决方案1】:

    您遇到了绝对路径和相对路径的问题。

    您的第一个选项是绝对路径。这意味着您将始终在计算机上的特定位置获取文件,但如果该位置不存在,您将无法找到它

    您的第二个选项使用相对路径,它将根据程序的起始位置查找文件,因此 exe 可能从与构建 java 的命令行不同的位置开始。

    解决方案是使用相对路径并确保 Joblist.txt 文件始终位于相对于您的运行位置的一个位置。

    如果您想知道程序的起始路径在哪里,可以运行以下代码:

    System.out.println(new File(".").getAbsolutePath())
    

    【讨论】:

    • 我尝试使用已经在正确位置的 Joblist.txt 的相对路径。但是当我点击 .exe 时,窗口很快就出现了,就像 0.01 秒一样,然后关闭。但是如果我使用绝对路径,窗口就会出现并且工作正常......
    • 可能是因为 exe 从不同的起点开始相对路径。您可以通过以下方式找到要点: System.out.println(new File(".").getAbsolutePath()) / 或将其写入您的日志或其他内容。那么你就可以开始弄清楚为什么相对路径不起作用了。
    • 谢谢。我找到了解决方案。 .exe 使用不同的目录。
    猜你喜欢
    • 2012-02-25
    • 2014-03-13
    • 2020-10-13
    • 2022-01-18
    • 2017-06-02
    • 2013-03-30
    • 1970-01-01
    • 2020-02-05
    • 2016-05-12
    相关资源
    最近更新 更多