Java:访问与 .jar 位于同一目录中的文件

标签 java file jar

我有一个程序,它使用名为 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)的简单方法是什么?

最佳答案

使用这个:

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

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

关于Java:访问与 .jar 位于同一目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26721734/

相关文章:

java - 我找不到 Could not resolve view with name 'index' in servlet with name 'DispatcherServlet' 的答案

java - (JAVA) 如何使用事件监听器添加多个数字?

java - 使用链表和数组构建邻接表图的性能差异巨大

java - 对象反序列化 - 从序列化对象中获取 int 数组

c++ - C++ 中的流式 I/O

c - 程序读取文件时遇到问题

c - C 中的 fwrite() 函数未写出预期答案

maven-2 - 使用 Maven 项目交付单个 jar

Java JAR 文件依赖关系

java - 如何读取 JAR 中的文本文件?