【问题标题】:Java: Accessing a file that is in the same directory as .jarJava:访问与 .jar 位于同一目录中的文件
【发布时间】:2014-11-03 19:38:06
【问题描述】:

我有一个程序,它使用一个名为 list.txt 的文件来填充一个 ArrayList 及其内容,然后得到一个随机行。

这是加载文件的部分:

public class ReadList {
    private Scanner f;

    public void openFile(){

        try{
            f = new Scanner(new File("list.txt"));
        }catch(Exception e){
            System.out.println("File not found!");
        }
    }

但是,从 .jar 文件运行它时它不起作用。我将 txt 放在同一目录中并使用了 f = new Scanner(new File("./list.txt")); 但它不起作用。我还尝试了一些我在网上找到的东西,但我能做的就是 a) 获取包含 .jar 的 .jar 的完整路径(/home/user/java/program.jar),以及 b) 获取完整的目录的路径,但末尾没有 /(/home/user/java),这是一个问题,因为我希望这个程序在 Windows 和 Linux 上都可以工作,因此我不能简单地做(“/home/user /java" + "/list.txt"),因为 Windows 在路径中使用反斜杠。

那么,无论文件位于哪个目录,只要它与 .jar 位于同一位置,只针对特定文件(将始终称为 list.txt)的简单方法是什么?

【问题讨论】:

  • 检查“user.dir”系统属性
  • File 类中还有一个可用的路径分隔符属性,因此您可以使其与平台无关(即 / 或 \ 或您使用的任何平台。)

标签: java file jar


【解决方案1】:

使用这个:

String filePath = System.getProperty("user.dir") + File.separator + "file.txt";

filePath 现在将包含 file.txt 的完整路径,该路径将与您的 jar 位于同一目录中。

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2010-12-29
    • 2014-09-15
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多