已解决
总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件
来自网友在路上 186886提问 提问时间:2023-11-11 23:35:07阅读次数: 86
最佳答案 问答题库868位专家为你答疑解惑
总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件
- 一·背景描述:
- 1.在不同的项目中,项目使用的开发框架都不一样,甚至是JDK原生开发模式。此时解析配置文件以及jar包中的清单文件,就只能利用JDK原生办法解析,而无法利用流行热门框架解析
- 2.了解JDK原生解析配置文件以及清单文件的实现方式,有助于自己理解各种开源框架的底层实现方式。因为大多数开源框架本质就是在JDK、JavaEE的基础上,利用各种设计模式进行封装而来,从而提升程序员的开发效率。
- 二·properties配置文件解析工具类:该工具类也可以用于解析MANIFEST.MF清单文件
- 三·MANIFEST.MF清单文件解析工具类:
一·背景描述:
1.在不同的项目中,项目使用的开发框架都不一样,甚至是JDK原生开发模式。此时解析配置文件以及jar包中的清单文件,就只能利用JDK原生办法解析,而无法利用流行热门框架解析
2.了解JDK原生解析配置文件以及清单文件的实现方式,有助于自己理解各种开源框架的底层实现方式。因为大多数开源框架本质就是在JDK、JavaEE的基础上,利用各种设计模式进行封装而来,从而提升程序员的开发效率。
二·properties配置文件解析工具类:该工具类也可以用于解析MANIFEST.MF清单文件
package utils;import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;/*** @Description Properties解析工具类,manifest.mf文件工具类* 注意:一个key后面的值不能换行,否则会读取不完整* <p>* Copyright @ 2022 Shanghai Mise Co. Ltd.* All right reserved.* <p>* @Author LiuMingFu* @Date 2023-05-17 16:25*/
public class PropUtil {public static void main(String[] args) {String fileUrl = "/Users/ideal/Desktop/web/test/shgc_WeChat2OA_config.properties";String keySecret = getPropValue(fileUrl, "key_secret");System.out.println(keySecret);File file = new File(fileUrl);String port = getPropValue(file, "port");System.out.println(port);}/*** 解析配置文件/manifest.mf文件,获取指定key的value值** @param filePath Properties配置文件路径/manifest.mf文件路径* @param key 需要获取值的key* @return* @author LiuMingFu* @date 2023-05-17*/public static String getPropValue(String filePath, String key) {String value = "";try {FileInputStream fileInput = new FileInputStream(filePath);Properties prop = new Properties();prop.load(fileInput);value = prop.getProperty(key);} catch (Exception ex) {ex.printStackTrace();}return value;}/*** 解析配置文件/manifest.mf文件,获取指定key的value值** @param file Properties配置文件对象/manifest.mf文件对象* @param key 需要获取值的key* @return* @author LiuMingFu* @date 2023-05-17*/public static String getPropValue(File file, String key) {String value = "";try {FileInputStream fileInput = new FileInputStream(file);Properties prop = new Properties();prop.load(fileInput);value = prop.getProperty(key);} catch (Exception ex) {ex.printStackTrace();}return value;}}
三·MANIFEST.MF清单文件解析工具类:
package utils;import java.io.IOException;
import java.util.Map;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;import static java.util.jar.Attributes.Name.MAIN_CLASS;/*** @Description TODO* <p>* Copyright @ 2022 Shanghai Mise Co. Ltd.* All right reserved.* <p>* @Author LiuMingFu* @Date 2023/11/9 10:52*/
public class JarUtil {public static void main(String[] args) throws IOException {String filePath = "/Users/ideal/Desktop/lib/Hello2.jar";Attributes attributes = parseManifestFile(filePath);for (Object o : attributes.keySet()) {System.out.println("key=" + o + " value=" + attributes.getValue(o.toString()));}System.out.println(getMainClass(filePath));System.out.println(getMFValue(filePath, "Created-By"));}/*** 解析jar包中的MANIFEST.MF(manifest.mf)文件,返回一个类似map的集合对象** @param jarFilePath jar包路径* @return* @author LiuMingFu* @date 2023/11/9*/public static Attributes parseManifestFile(String jarFilePath) throws IOException {if (jarFilePath != null && !"".equals(jarFilePath)) {JarFile jarFile = new JarFile(jarFilePath);Manifest manifest = jarFile.getManifest();Attributes mainAttributes = manifest.getMainAttributes();return mainAttributes;} else {return null;}}/*** 解析jar包中的MANIFEST.MF(manifest.mf)文件,返回一个Main-Class的属性值** @param jarFilePath jar包路径* @return* @author LiuMingFu* @date 2023/11/9*/public static String getMainClass(String jarFilePath) throws IOException {JarFile jarFile = new JarFile(jarFilePath);Manifest mf = jarFile.getManifest();Attributes mainAttributes = mf.getMainAttributes();for (Map.Entry<Object, Object> entry : mainAttributes.entrySet()) {String key = entry.getKey().toString();if (key.equalsIgnoreCase(MAIN_CLASS.toString())) {return entry.getValue().toString();}}return "";}/*** 解析jar包中的MANIFEST.MF(manifest.mf)文件,返回一个指定key的属性值** @param jarFilePath jar包路径* @param key manifest.mf文件的一个key* @return* @author LiuMingFu* @date 2023/11/9*/public static String getMFValue(String jarFilePath, String key) throws IOException {JarFile jarFile = new JarFile(jarFilePath);Manifest mf = jarFile.getManifest();Attributes mainAttributes = mf.getMainAttributes();for (Map.Entry<Object, Object> entry : mainAttributes.entrySet()) {String keyTemp = entry.getKey().toString();if (keyTemp.equalsIgnoreCase(key)) {return entry.getValue().toString();}}return "";}
}
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"总结:利用原生JDK封装工具类,解析properties配置文件以及MF清单文件":http://eshow365.cn/6-38014-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Fortran 中的指针
- 下一篇: 阿里云服务器搭建sql 服务