一、为什么将配置文件放在java project外?

在java应用中经常会用到配置文件,配置文件中定义了程序运行所需要的一些配置信息,而配置文件既以放在java project内部(在给java project打jar包时将配置文件打在jar包内部),也可以放在java project外部。

在生产环境中比较可取的是:配置文件放在java project外部。这是因为:

当一个java程序运行在生产环境时,通常由运维人员来负责维护程序,如果有些配置信息需要修改,维护人员更改配置文件并重启程序即ok了。显而易见如果配置文件打包在jar包内部的话,修改配置文件就很繁琐,有时候甚至需要开发人员重新修改配置文件、重新打jar包并替换就jar。但是这种行为在生产环境中通常是不被允许的,因此就需要将配置文件放在jar包外部。

那么如何读取jar包外的配置文件呢?其和读取jar包内的配置文件不同。关于读取jar包内的配置文件方法可以参考:https://www.jianshu.com/p/bd7d7a2891f8

二、java读取jar包外的配置文件

2.1  在intellij idea中新建一个Java project(基于maven)

2.2 新建配置文件

step 1.  intellij idea中选中工程(即图中的test123)并右击 --> new  --> directory,输入目录名res(也可以是其他命名)。

step 2. 选中新建的res目录并右击 --> mark directory as --> resources root,即可得到图中的res目录(注意res右下角出现了黄色的横杠)。(该步骤很关键)

step 3. 选中res目录并右击 --> new ---> file,输入myCanal.properties(myCanal也可以改为其他),打开myCanal.properties并输入配置信息并保存,例如:

mysqlInstanceName=test1

mysqlSchemaName=alex

其中mysqlInstanceName和mysqlSchemaName都为属性的键key, test1和alex分别为其对应的属性值value。

配置文件示例

2.3 读取配置文件的业务代码

import java.io.*;

import java.util.Properties;

public class Main {

public static void main(String[] args)throws IOException {

Properties prop =new Properties();

InputStream inputStream =null;

try {

prop.load(new FileInputStream("res/myCanal.properties"));

/* 注释:也可以直接在src/main/resources目录下新建配置文件,但是new FileInputStream("res/myCanal.properties")需要改为new FileInputStream("src/main/resources/myCanal.properties") */

}catch (FileNotFoundException e) {

e.printStackTrace();

}catch (IOException e) {

e.printStackTrace();

}

System.out.println(prop.getProperty("mysqlSchemaName"));

System.out.println(prop.getProperty("mysqlInstanceName"));

}

}

2.4  maven打包jar(配置文件不需要打入jar包)

打jar包方法网上有很多

2.5  将打包好的jar和intellij idea的test123工程下的res文件夹(包含配置文件)复制到*同一级目录下*(服务器或本机上运行该程序的地方)

(注意是*同一级目录下*,这很关键,否则程序会找不到该配置文件)

2.6 启动jar读取配置文件

在jar所在的路径,运行下面命令即可:

java -classpath abc-1.0.jar Main

其中abc-1.0.jar为打包好的jar,Main为主类

当然主类也可以直接定义在pom.xml文件中,具体方法可以参考网上。

java读取外部配置文件_java读取jar外部的配置文件相关推荐

  1. java jar包 配置文件_java 导入jar包中配置文件

    spring项目只能识别到项目内的xml配置文件,无法识别jar中xml配置文件 解决思路: 在启动初始化期间,将jar包内部的文件拷贝到jar包外部相对路径中.//jarFullFileName:  ...

  2. java读取mysql数据库配置文件_java读取properties文件的方法

    Java 读写Properties配置文件 Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实 ...

  3. java下mysql连接配置文件_Java读取.properties配置文件并连接数据库

    1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...

  4. java接口配置文件_Java读取property配置文件,另接口的配置

    为了程序容易修改,不用把接口的的信息放在程序里面,如果是那样,接口的端口改变就会造成很麻烦,所以把它写在配置文件properties中 1.新建一个配置文件property  如:test.prope ...

  5. java加载xml配置文件_java读取配置文件的几种方法

    原标题:java读取配置文件的几种方法 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring ...

  6. java中读取mp3文件_java读取mp3文件

    JMF实际上是Java的一个类包.JMF 2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能.这些功能包括:媒体捕获.压缩.流转.回放,以及对各种主要媒体形式和编码的支 持,如M-J ...

  7. Java读取propertise配置文件_JAVA读取PROPERTIES配置文件

    项目经常用到json,xml,properties,文本文件等,作为配置文件.用来存储连接字符串或其他配置参数等. 本文记录properties. properties文件,存储格式 键=值.例如新建 ...

  8. java 监听配置文件_java读取系统Properties配置文件利用线程实时监控配置文件变化...

    package util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  9. java加载配置文件_Java 读取配置文件的五种方式

    方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来. 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的clas ...

  10. java加载配置文件_java 读取和修改配置文件

    1.读取配置文件 try{ File f=new File("D:\\myfile.text"); Properties pp=new Properties(); FileInpu ...

最新文章

  1. SharePoint 2010 与 SQL Server 2012 报表服务集成
  2. SQL Server 2008 R2中文版快速安装
  3. Apache Shiro 使用手册(三)Shiro 授权
  4. 管能做暖气管道吗_这样的暖气管道施工,标准吗
  5. [转载] 启用和禁用 Reporting Services 的客户端打印和导出文件格式
  6. 允許Linux的snmp服務被查詢
  7. ECCV 2020 Oral | BorderDet : 用边界特征做检测
  8. oracle 批量插入 mysql 区别,Oracle 和 mysql 的批量操作Sql语句 的区别
  9. 程序设计工程师c语言,《C语言程序设计》自学百问.doc
  10. 信用卡号校验java_ES reduce 一行代码解决信用卡号验证问题
  11. 福建省高考成绩查询2021具体时间,福建高考时间2021具体时间表一览 福建高考时间是几月几号...
  12. java过滤器Filter
  13. Java实现pdf打印文件
  14. 计算机中升序符号,电脑excel表格软件中的标点符号怎么快速替换
  15. 参考文献中英文人名_参考文献英文人名的缩写规则
  16. 高德地图2----输入提示、关键字查询
  17. 【逻辑思维训练 二】系统思维训练
  18. JavaScript的pop()
  19. Android-0. Android studio在导航栏增加自己的功能图标(如小扳手)
  20. Docker容器时间不正确 差八个时区

热门文章

  1. 不用找,你想要的家具贴图素材都在这里
  2. hivesql的几种优化的方法
  3. 勤哲excel服务器端口协议,勤哲EXCEL服务器2017版工作流定义方式及无限制版本非高低配单服务器版,不绑定服务...
  4. 【TCP/IP】【测试】常用发流软件一览
  5. CSDN博客下载器v1.0发布(Windows版本)
  6. 【读书笔记】《博弈论》--翟文明
  7. iframe中加载html页面,jQuery - 动态创建iframe并加载页面
  8. 好用的Android抓包神器 VNET
  9. 已知弧长计算器_半径弧长计算软件 弧长弦长求半径计算器
  10. talib python文档_talib 中文文档(三):talib 方法大全