网站开发转移合同,seo搜索引擎优化报价,初级程序员与网站开发,杨凌做网站的公司总结#xff1a;利用原生JDK封装工具类#xff0c;解析properties配置文件以及MF清单文件 一背景描述#xff1a;1.在不同的项目中#xff0c;项目使用的开发框架都不一样#xff0c;甚至是JDK原生开发模式。此时解析配置文件以及jar包中的清单文件#xff0c;就只能利用… 总结利用原生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.MFmanifest.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.MFmanifest.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.EntryObject, Object entry : mainAttributes.entrySet()) {String key entry.getKey().toString();if (key.equalsIgnoreCase(MAIN_CLASS.toString())) {return entry.getValue().toString();}}return ;}/*** 解析jar包中的MANIFEST.MFmanifest.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.EntryObject, Object entry : mainAttributes.entrySet()) {String keyTemp entry.getKey().toString();if (keyTemp.equalsIgnoreCase(key)) {return entry.getValue().toString();}}return ;}
}