可能重複:
How can a Java program use files inside the .jar for read and write?在可運行jar中加載和保存資源?
我在創作遊戲的過程中,我想這一切從運行的JAR文件運行,所以我所有的資源(圖片和文本文件)將在jar文件中。
我遇到的問題是處理jar內的文件非常困難。
我正在使用eclipse,它有時可以在你身上玩技巧,因爲如果你從eclipse運行它,它會找到這些文件,但是如果你導出它不會。
我只是想基本上都知道露水的幾件事情的正確方法:
- 我需要能夠加載圖像(這是我的工作,不知何故,我有點與它修修補補,並做到了在意外,所以我不知道它是如何工作的)
- 我需要能夠從文本文件中讀取(我也有這個工作,再次,偶然和猜測時間)
- 我需要能夠寫入存在的文本文件,並且位於jar中。這是讓我覺得我做錯了一切的原因。我所要做的就是能夠保存某些設置,以便在下一次加載時工作,並且我不知道如何寫入文件。
在eclipse(Indigo)中,我製作了一個文件夾名稱「resources」,並將其標記爲源文件夾。我把所有的圖像和文本文件放在那裏。 我讀了相似圖片:
public static Image ammo = new ImageIcon(TankMazeGame.class.getResource("ammo.png")).getImage();
我讀的文本文件是這樣的:
InputStream is = TankMazeRunner.class.getClassLoader().getResourceAsStream("Settings.txt");
Scanner settingsReader = new Scanner(new InputStreamReader(is));
我寫我的設置文件這樣的,但它不是真正的工作,所以這就是我需要幫助。
File settingsFile = new File(DisplayMenu.class.getClassLoader().getResource("Settings.txt").getFile());
try {
OutputStream os = new FileOutputStream(settingsFile, true);
PrintWriter pw = new PrintWriter(os, true);
pw.write("SIZE: " + TankMazeRunner.WIDTH + "\n");
os.flush();
pw.close();
} catch (Exception e2) {
System.out.println("Error");
}
正如你可能從我的代碼告訴我,我迷路了。
資源文件夾中有一個Settings.txt文件。我只需要一種方法來寫入它。從它讀取應該沒問題,除非我做了一切錯誤或有更好的方法。 – Monkeybro10
從類路徑中讀取圖像和默認設置應該沒問題,但是如何將設置寫入jar外的衆所周知的位置(jar旁邊?特別命名爲temp dir?)。然後,當你閱讀設置時,你會看到衆所周知的文件,缺乏你回退到默認值? – Charlie
請參見[Java程序如何使用.jar中的文件進行讀取和寫入?](http://stackoverflow.com/q/5052311/418556)以[embedded-resource](http:// stackoverflow.com/tags/embedded-resource/info)。 –