我想從命令行運行MyRunnableJar.jar
。它需要從file_[1-4].dat
中讀取,做一些處理,然後寫入file_5.dat
。上述所有數據文件都在文件系統中靠近MyRunnableJar.jar
。例如:如何從可運行JAR內讀取/寫入外部數據資源?
super_directory/
MyRunnableJar.jar
data_resources/
file_1.dat
file_2.dat
file_3.dat
nested_data_directory/
file_4.dat
file_5.dat
(MyRunnableJar.jar
被Eclipse的Export
功能創建的。)
我之所以想這樣做事是因爲應用程序的運行成本太高,無法運行在我的小筆記本上。相反,我想將它放在遠程服務器(包含所有必須訪問的大數據文件)並在那裏運行。
問題是,我想不出如何顯示那些數據文件所在的可運行JAR。如果需要,數據文件當然可以移動。但是,將它們保留在JAR中並不是一種選擇,因爲如果我想要更改一些應用程序代碼,則必須重新傳輸整個JAR,如果它包含數據文件,則該JAR會很大。此外,如果它實際上位於我的JAR中,我將無法寫入file_5.dat
。
我知道在Stack Exchange上有很多類似的問題,但在每種情況下,問題在某些重要方面略有不同。
編輯:
- 請參閱接受的答案。
- 另外請注意,安德烈的解決方案(在評論中解釋)也有效,因爲在我的情況下,JAR和數據文件將始終在文件系統中相對於彼此位於相同的位置。
_爲什麼每個問題在一些重要的方面有所不同?顯示努力。 – 2012-07-15 22:58:20
我不太確定,但我認爲如果您在java程序中使用相對路徑,它將從工作目錄開始。所以如果你說'新的文件(「data_resources/file_1.dat」)'它應該打開第一個文件。 – 2012-07-15 23:02:18