jar打包时如何把properties配制文件放在包外面? 各位前辈请教一下我以前写的一个C/S项目打成了jar(大部分源代码以找不到了),现在由于数据库更改了密码不得不把jar解压更改代码再重新打包,于是就想用改成properties配制文件把一些需要更改的属性配制在里面,说做就做可写完了,又遇到新的问题了就是如何把这配制文件打包在包外面呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你就把properties放在jar包外面,读取这个properties的时候注意一下相对于jar包的相对路径就可以了 我现在就是搞不清那相对路径该怎么写了,我的那db.properties文件放在jar外面的user文件夹里,我那读取配制文件的类在jar里的commom里,我还能用这种方式(InputStream in = getClass().getResourceAsStream("");)来读取配制信息吗? Properties p = new Properties();p.load(new FileInputStream("../user/db.properties"));p.getProperty("username");p.getProperty("password");lib |_*.jar |user |_db.properties如果jar包在lib目录下,db.properties在user目录下就可以这样写../user/db.properties这个路径是相对于jar包所在路径的../ 这代表 jar包所在目录的上级目录 package common;import java.io.PrintStream;import java.util.Properties;public final class Env extends Properties{ public static Env getInstance() { if(instance != null) { return instance; } else { makeInstance(); return instance; } } private static synchronized void makeInstance() { if(instance == null) instance = new Env(); } private Env() { java.io.InputStream is = getClass().getResourceAsStream("../user/db.properties"); try { load(is); } catch(Exception e) { System.out.println(); System.err.println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002"); return; } } private static Env instance;}谢谢 蓝色雪狐!可我这样写过可还是不能读取到里面的数据,请指教!!! 你可以用FileInputStream去读文件private Env() { try { InputStream is = new FileInputStream("../user/db.properties"); load(is); is.close(); } catch (Exception e) { System.out.println(); System.err .println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002 "); return; } } 你可以用FileInputStream去读文件private Env() { try { InputStream is = new FileInputStream("../user/db.properties"); load(is); is.close(); } catch (Exception e) { System.out.println(); System.err .println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002 "); return; } } 通过冒泡排序可以实现从小到大的排列,而通过选择排序实现不了,望高手指点··· 删除子项的子项?? 模块权限动态分配 关于Java向数据库中插入数据的问题,求助 为什么我的聊天窗口不能通信呢? 请问该怎么运行这个HelloWorld 谁来帮我看看 Filter过滤器的问题 JBuilder运行和调试的问题? the origin about the Grapics class? SOS 用一个串替换另外一个串中的子串 关于list迭代器的经典问题 简单问题先来先得分
Properties p = new Properties();
p.load(new FileInputStream("../user/db.properties"));
p.getProperty("username");
p.getProperty("password");lib
|_*.jar
|
user
|_db.properties如果jar包在lib目录下,db.properties在user目录下就可以这样写../user/db.properties
这个路径是相对于jar包所在路径的
../ 这代表 jar包所在目录的上级目录
package common;import java.io.PrintStream;
import java.util.Properties;public final class Env extends Properties
{ public static Env getInstance()
{
if(instance != null)
{
return instance;
} else
{
makeInstance();
return instance;
}
} private static synchronized void makeInstance()
{
if(instance == null)
instance = new Env();
} private Env()
{
java.io.InputStream is = getClass().getResourceAsStream("../user/db.properties");
try
{
load(is);
}
catch(Exception e)
{
System.out.println();
System.err.println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002");
return;
}
} private static Env instance;
}
谢谢 蓝色雪狐!
可我这样写过可还是不能读取到里面的数据,请指教!!!
InputStream is = new FileInputStream("../user/db.properties");
load(is);
is.close();
} catch (Exception e) {
System.out.println();
System.err
.println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002 ");
return;
}
}
InputStream is = new FileInputStream("../user/db.properties");
load(is);
is.close();
} catch (Exception e) {
System.out.println();
System.err
.println("\u9519\u8BEF\uFF1A\u6CA1\u6709\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6\uFF0C\u8BF7\u786E\u8BA4db.property\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002 ");
return;
}
}