1. 程式人生 > 其它 >Java打包後讀檔案和寫檔案操作方法

Java打包後讀檔案和寫檔案操作方法

技術標籤:筆記Java基礎java程式語言

javaIO操作在打包後經常會報出檔案找不到的錯誤:

java.io.FileNotFoundException: D:\package\bbb\history.xml (系統找不到指定的檔案。)

那是因為Java程式打包後的程式目錄結構會發生一定的變化,這會對檔案讀寫操作產生直接影響,所以如果需要將一段程式打成jar包那就不能用簡單的絕對或者相對路徑進行檔案操作。
解決方法:

需求只需要讀檔案

 filePath = FilesUtils.class.getClassLoader().getResource("history.xml"
).getPath(); //判斷檔案是否存在 File file = new File(filePath); System.out.println(file2.exists());

可根據需求進行調節getResource()會返回一個代表檔案路徑url物件,getPath()方法會返回需要讀取檔案的路徑字串,依靠這個方法就可以在jar包中動態的獲取檔案路徑。

需求需要讀寫檔案

由於壓縮包中的檔案只支援讀操作,如果對檔案進行寫入會報錯誤,所以如果檔案要支援讀寫需要另一種思路。
首先將需要讀取的檔案和jar包放在同一目錄下:
打包
通過如下程式碼獲取路徑

filePath = System.
getProperty("user.dir").replace("\\", "/")+"/history.xml"; //判斷檔案是否存在 File file = new File(filePath); System.out.println(file2.exists());

如果需要生成exe可執行檔案,(不會生成可以參考這裡)對於外部這個需要讀寫的檔案,在exe4j生成過程中不用新增任何操作,在使用inno setup打成安裝包(生成和打包過程連結中有)時需要在[Files]處加上一行:

Source: "D:\package\bbb\history.xml"
; DestDir: "{app}"; Flags: ignoreversion

iss程式
把D:\package\bbb\history.xml改為你的檔案路徑。以上就是打包後文件的讀寫方法。