2014-11-03 76 views
2

我有一個程序使用名爲list.txt的文件來填充ArrayList及其內容,然後獲取一個隨機行。Java:訪問與.jar位於同一目錄中的文件

下面是加載文件的一部分:

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)的簡單方法是什麼?

+0

檢查「user.dir」系統屬性 – Multisync 2014-11-03 19:43:30

+0

還有一個可用於File類的路徑分隔符屬性,因此您可以使其與平臺無關(即/或\或您所使用的任何平臺)。 – Duston 2014-11-03 19:47:04

回答

2

使用此:

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

文件路徑,現在將包含將在同一目錄作爲你的罐子file.txt的完整路徑。

相關問題