博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jar与外部文件的信息交互
阅读量:6815 次
发布时间:2019-06-26

本文共 1558 字,大约阅读时间需要 5 分钟。

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

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

    1.想要传入参数;

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

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

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

    问题归纳:

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

    在CSDN的论坛中有同样的疑问

   

有网友给出的解决方案:

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

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

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

 

分析:

  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对象来与外部文件进行少量的数据交互,从而解决了参数问题,临时小数据保存问题。

  PS:关于Java支持的字符集和系统属性参见或者API帮助文档。

 

转载地址:http://nfbzl.baihongyu.com/

你可能感兴趣的文章
字符串2
查看>>
在Linux合并文件
查看>>
nodejs express-session使用时 req.session undefined问题
查看>>
[工具]iostat
查看>>
php正则表达式匹配函数
查看>>
从零开始学OpenDaylight之五:Hello安装到Controller
查看>>
发送带有附件的邮件
查看>>
MySQL 教程分享
查看>>
s.isdigit、isdecimal和s.isnumeric区别
查看>>
中型公司网络架构拓扑与详解
查看>>
磁盘分区以及解决反序安装操作系统所带来的困扰
查看>>
python3 no module named yaml
查看>>
【Android】 BroadcastReceiver详解
查看>>
Alpha冲刺第7天
查看>>
求弦长或线段长【初级中级高阶辅导】
查看>>
SocketFromServer
查看>>
[吴恩达机器学习笔记]12支持向量机5SVM参数细节
查看>>
Postman的Post请求方式的四种类型的数据
查看>>
Android事件分发机制初探
查看>>
CF1030E Vasya and Good Sequences
查看>>