java jar外置参数_Jar与外部文件的信息交互

JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件),当然JAR格式是以目前较为流行的ZIP格式为基础,因此ZIP压缩,解压软件可以直接打开JAR文件,查看其内部文件信息。

一个包含了主类的JAR文件可以通过Java命令执行运行,有如下问题:

1.想要传入参数;

2.想要返回信息,并记录

解决这个问题的方式比较了,数据库记录,写入文件,或者命令执行时添加参数等。

今天遇到的问题是:运行JAR文件,获取外部数据作为参数,运行过程中修改参数值,结束运行时保存参数值,待下一次运行是使用该参数值。

问题归纳:

JAR文件运行,与外部进行少了数据交互,并且数据具有持久性。

f8bfbb94f6b883f1977f73b05737fc38.png在CSDN的论坛中有同样的疑问:

c9bbceba09e013b210d219b70090550f.png

f8bfbb94f6b883f1977f73b05737fc38.png有网友给出的解决方案:

cc6e297a44c72166eab1c4f1513db475.png

总结下来就是配置文件能够被正确读取,并且能正确写入新的数据。这将面临一个很重要的问题:配置文件的路径。

路径可以使用绝对路径和相对路径,当然为了保存JAR文件能够正常在任意位置执行,不依赖CLASSPATH,不依赖工程环境,这就要使用到Java提供的系统属性。

下面是对系统属性做简单测试,以确保行对路径的正确性。

6aef36077262898a5699222dfa98a988.png

分析:

test1-1.0.jar是可执行的Jar包,其在 target 目录下。

test1-1.0.jar中的main方法的代码如下:

public static void main(String [] args){

System.out.println("user.home:"+System.getProperty("user.home"));

System.out.println("user.dir"+System.getProperty("user.dir"));

}

从打印输出的结果看,使用系统属性中key="user.dir"将表示Jar文件所在的路径,因此可以在Jar中使用到配置文件的地方使用系统属性信息,使得配置文件的路径将是一个相对的路径。

例如在实际代码中的应用:

File config = new File(System.getProperty("user.dir") + File.separator

+ "ccs.Properties");

Properties p = new Properties();

try {

if (config.exists()) {

System.out.println("Load Config ccs.Properties File ...");

p.load(new FileInputStream(config));

} else {

System.out.println("Load Default Constant Config ...");

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

这样使用Properties对象来与外部文件进行少量的数据交互,从而解决了参数问题,临时小数据保存问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值