簡體   English   中英

我需要在Java項目中使用什么相對路徑

[英]What relative path do I need to use in my Java Project

我有一個像這樣的結構:

src 
  -|com 
       -|company 
               -|Core --> JAVA class 
  -|rules --> text files

Inside Core是一個Java類,它使用:

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));

但我無法弄清楚使用什么相對路徑。 現在我使用:

"..\\..\\..\\..\\rules\\rule1.txt"

我也嘗試過:

"../../../../rules/rule1.txt"

我哪里做錯了?

它不起作用。 相對路徑相對於當前應用程序的工作目錄而不是類的目錄。 如果要查找當前工作目錄的內容,請使用System.getProperty("user.dir")

更好的方法是將rules目錄添加到類路徑中,然后使用Class#getResourceAsStream()


另一種方法是以其他方式設置規則目錄的路徑:如果可行或設置某些系統屬性,您可以提供命令行選項(例如java -Drules.path=/path/to/rules ...以及稍后通過System.getProperty("rules.path")讀取。

這取決於您啟動的位置,而不是Java類的包結構。 正如@EJP指出的那樣,其他API確實反映了您的包結構。

我過去使用的一個技巧是讓一行代碼創建一個文件“SomeSillyName.txt”。 並看看實際彈出的位置。

我的猜測是你可能會從src啟動,所以一個簡單的“rules / rule1.txt”就可以了。

執行時的當前目錄與當前類所在的包無關。它不會更改。

如果您的文件隨應用程序一起分發,請使用Class.getResourceAsStream()。

如果您使用的是像Eclipse這樣的IDE,則工作目錄默認為項目根文件夾。 所以src/rules/rule1.txt應該可行。 (或者我誤解了你的文件夾結構。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM