我有一个程序,它使用名为 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!");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,从 .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)的简单方法是什么?