获取classpath下路径的方法

方法1(返回绝对路径):
URL url = Thread.currentThread().getContextClassLoader().getResource(""font/simkai.ttf"");
String path = url.getPath();

方法2:
InputStream inputStream = JdbcUtil.class.getResourceAsStream("/jdbc.properties");
以上方法的意思是在classpath路径下查找jdbc.properties。如要打成一个jar包形式建议用这个方法获取资源文件, 如用方法1获取是会有问题的,因为方法1是获取的绝对路径,运行java -jar test.jar后获取的路径会是 d:/test.jar!/jdbc.properties这种样子,导致路径不正确,多了个叹号,在Eclipse下运行正常。

示例1:加载properties文件

Properties properties = new Properties();
InputStream inputStream = JdbcUtil.class.getResourceAsStream("/jdbc.properties");
try {
properties.load(inputStream);
} catch (FileNotFoundException e1) {
log.error(e1.getMessage(), e1);
} catch (IOException e1) {
log.error(e1.getMessage(), e1);
} finally {
try {
inputStream.close();
} catch (IOException e) {
log.error(e);
}
}
driver = properties.getProperty("jdbc.driver");
url = properties.getProperty("jdbc.url");
username = properties.getProperty("jdbc.username");
password = properties.getProperty("jdbc.password");


示例2:加载xml文件


InputStream in = GenerateBaseDataServiceImpl.class.getResourceAsStream("/tableInfo.xml");
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
Element root = doc.getRootElement();
Iterator<?> iterator = root.elementIterator("baseData");
Element subElement;
String tableSchema;
String tableName;
String sqlStatement;
TableInfo tableInfo = null;
while (iterator.hasNext()) {
subElement = (Element) iterator.next();
tableSchema = subElement.attribute("tableSchema").getText();
tableName = subElement.attribute("tableName").getText();
Attribute sqlStatementAttribute = subElement.attribute("sqlStatement");
tableInfo = new TableInfo();
if (sqlStatementAttribute != null) {
sqlStatement = sqlStatementAttribute.getText();
tableInfo.setSqlStatement(sqlStatement);
}
tableInfo.setTableSchema(tableSchema);
tableInfo.setTableName(tableName);
tableInfoList.add(tableInfo);
}
} catch (DocumentException e) {
log.error("读取基础数据的xml出错", e);
} finally {
try {
in.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}



方法3:在web工程下获取WEB-INF路径
Constants.WEB_INF_PATH = servletContext.getRealPath("WEB-INF");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值