Java打包後讀檔案和寫檔案操作方法
阿新 • • 發佈:2021-02-07
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
把D:\package\bbb\history.xml改為你的檔案路徑。以上就是打包後文件的讀寫方法。