jar包中的类如何读取包内和包外的配置文件
最近将代码打包成jar包,关于如何处理读取配置文件的问题特此记录一下。
如上所示,out.properties是于a.jar包在同一文件目录下;
in.properties是在a.jar包内部的。
关于a.class如何读取jar内或jar外的配置文件,
如下所示:
最近将代码打包成jar包,关于如何处理读取配置文件的问题特此记录一下。
- out.properties
- a.jar
- -com
- -a.class
- -in.properties
如上所示,out.properties是于a.jar包在同一文件目录下;
in.properties是在a.jar包内部的。
关于a.class如何读取jar内或jar外的配置文件,
如下所示:
- FileInputStream inputStream1 = new FileInputStream("out.properties");
- InputStream inputStream2 = a.class.getResourceAsStream("/in.properties");
public class FileUtil
{
public static String getProperty(String name) throws IOException
{
Properties p = new Properties();
File f = new File("/Users/binshi/Documents/workspace/config.properties");
InputStream in=new FileInputStream(f);
System.out.println(in.read());
p.load(in);
in.close();
String mqtt_host=p.getProperty(name);
return mqtt_host;
}
public static void setC3P0() throws ParserConfigurationException, SAXException, IOException, TransformerException
{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse("/Users/binshi/Documents/workspace/ProtocolParser/src/c3p0-config.xml");
NodeList list=doc.getElementsByTagName("property");
for(int i=0;i<list.getLength();i++)
{
Element ele=(Element)list.item(i);
if(ele.getAttribute("name").equals("jdbcUrl"))
{
System.out.println(ele.getTextContent());
ele.setTextContent(FileUtil.getProperty("jdbcUrl"));
System.out.println(ele.getTextContent());
}
else if(ele.getAttribute("name").equals("user"))
{
ele.setTextContent(FileUtil.getProperty("user"));
}
else if(ele.getAttribute("name").equals("password"))
{
ele.setTextContent(FileUtil.getProperty("password"));
}
}
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
DOMSource domSource=new DOMSource(doc);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result=new StreamResult(new FileOutputStream("/Users/binshi/Documents/workspace/ProtocolParser/src/c3p0-config.xml"));
transformer.transform(domSource,result);
}
public static void main(String agrs[]) throws IOException, ParserConfigurationException, SAXException, TransformerException
{
System.out.println(getProperty("ss"));
//setC3P0();
}