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改为你的文件路径。以上就是打包后文件的读写方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值