jar包 同级目录 访问路径_通用Propterties工具类,兼容读jar同级目录的文件。

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;

/**

* 读取Properties综合类

*

* @author lijn 2014-02-25

*/

public class PropertiesUtil {

/**

* 得到某一个类的路径

*

* @param name

* @return

*/

public static String getPath(Class name) {

String strResult = null;

if (System.getProperty("os.name").toLowerCase().indexOf("window") > -1) {

strResult = name.getResource("/").toString().replace("file:/", "")

.replace("%20", " ");

} else {

strResult = name.getResource("/").toString().replace("file:", "")

.replace("%20", " ");

}

return strResult;

}

/**

* 读取所有的property

*

* @param filename

* properties文件路径

* @return 所有的property的集合(map形式)

*/

@SuppressWarnings("unchecked")

public static Map getPropties(String filename) {

if (null == filename) {

return null;

}

String filePath = getPath(PropertiesUtil.class) + filename;

Properties props = new Properties();

InputStream in = null;

try {

in = new BufferedInputStream(new FileInputStream(filePath));

props.load(in);

Map map = new HashMap();

Enumeration en = props.propertyNames();

while (en.hasMoreElements()) {

String key = (String) en.nextElement();

String Property = props.getProperty(key);

map.put(key, Property);

}

return map;

// 关闭资源

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

/**

* 获取某个property的值

*

* @param filename

* 文件名

* @param key

* property的key

* @return property的value

*/

public static String setProp(String filename, String key, String value) {

if (null == filename || null == key) {

return null;

}

String filePath = getPath(PropertiesUtil.class) + filename;

Properties props = new Properties();

FileOutputStream out = null;

InputStream in = null;

try {

in = new BufferedInputStream(new FileInputStream(filePath));

props.load(in);

out = new FileOutputStream(new File(filePath));

props.setProperty(key, value);

props.store(out, "update");

// 关闭资源

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

out.close();

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

/**

* 获取某个property的值

*

* @param filename

* 文件名

* @param key

* property的key

* @return property的value

*/

public static String getProp(String filename, String key) {

if (null == filename || null == key) {

return null;

}

String filePath = getPath(PropertiesUtil.class) + filename;

Properties props = new Properties();

InputStream in = null;

try {

in = new BufferedInputStream(new FileInputStream(filePath));

props.load(in);

return props.getProperty(key);

// 关闭资源

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

/**

* 需要将config.properies文件放到和本类同级目录下面

*

* @param filename

* @param key

* @param value

* @return

*/

public static String setJarProp(String filename, String key, String value) {

if (null == filename || null == key) {

return null;

}

String filePath = getPath(PropertiesUtil.class) + filename;

Properties props = new Properties();

FileOutputStream out = null;

InputStream in = null;

try {

in = PropertiesUtil.class.getResourceAsStream("config.properties");

// System.out.println(PropertiesUtil.class.getClassLoader().getResource("config.properties"));

BufferedInputStream b2 = new BufferedInputStream(in);

props.load(b2);

out = new FileOutputStream(filePath);

props.setProperty(key, value);

props.store(out, "update");

// 关闭资源

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

out.close();

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

/**

* 读写jar外的properties文件

*

* @param filename

* @param key

* @param value

*/

public static void setExtralProperty(String filename, String key,

String value) {

if (null == filename || null == key) {

return;

}

String outPathString = System.getProperty("java.class.path");

outPathString = outPathString.substring(0, outPathString

.lastIndexOf("\\") + 1);

String filePath = outPathString + filename;

Properties props = new Properties();

FileOutputStream out = null;

BufferedInputStream b2 = null;

try {

b2 = new BufferedInputStream(new FileInputStream(filePath));

props.load(b2);

out = new FileOutputStream(new File(filePath));

props.setProperty(key, value);

props.store(out, "update");

// 关闭资源

} catch (FileNotFoundException e) {

setProp(filename,key,value);

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if(null!=out){

out.close();

}

if(null!=b2){

b2.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* 以行的形式写ja内的文件

*

* @param filename

* @param key

* @param value

*/

public static void writeLineInerFile(String filename, String content) {

if (null == filename || null == content) {

return;

}

String filePath = getPath(PropertiesUtil.class) + filename;

FileOutputStream out = null;

BufferedInputStream b2 = null;

byte[] cont=new byte[4];

String contentResult="";

try {

//先读取源文件的内容,再追加内容

b2 = new BufferedInputStream(new FileInputStream(filePath));

int res=b2.read(cont);

while(res!=-1){

contentResult=contentResult+new String(cont);

res=b2.read(cont);

}

//追加

contentResult+=content;

out = new FileOutputStream(new File(filePath));

out.write(contentResult.getBytes());

// 关闭资源

} catch (FileNotFoundException e) {

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if(null!=out){

out.close();

}

if(null!=b2){

b2.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* 以行的形式写jar外的文件

*

* @param filename

* @param key

* @param value

*/

public static void writeLineExtralFile(String filename, String content) {

if (null == filename || null == content) {

return;

}

String outPathString = System.getProperty("java.class.path");

outPathString = outPathString.substring(0, outPathString

.lastIndexOf("\\") + 1);

String filePath = outPathString + filename;

FileOutputStream out = null;

BufferedInputStream b2 = null;

byte[] cont=new byte[1024];

String contentResult="";

try {

//先读取源文件的内容,再追加内容

b2 = new BufferedInputStream(new FileInputStream(filePath));

int res=b2.read(cont);

while(res!=-1){

contentResult=contentResult+new String(cont);

res=b2.read(cont);

}

//追加

contentResult+=content;

out = new FileOutputStream(filePath);

out.write(contentResult.getBytes());

// 关闭资源

} catch (FileNotFoundException e) {

writeLineInerFile(filename,content);

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if(null!=out){

out.close();

}

if(null!=b2){

b2.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* 读jar外的properties文件的属性

*

* @param filename

* @param key

* @param value

*/

public static String getExtralProperty(String filename, String key) {

if (null == filename || null == key) {

return null;

}

String outPathString = System.getProperty("java.class.path");

outPathString = outPathString.substring(0, outPathString

.lastIndexOf("\\") + 1);

String filePath = outPathString + filename;

Properties props = new Properties();

BufferedInputStream b2=null;

try {

b2 = new BufferedInputStream(new FileInputStream(filePath));

props.load(b2);

return props.getProperty(key);

// 关闭资源

} catch (FileNotFoundException e) {

return getProp(filename,key);

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if(null!=b2){

b2.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

public static void main(String[] args) throws IOException {

writeLineExtralFile("error.txt","fiowe");

}

}

3.后记。

如果是要读jar里面的src直属的properties,直接用ResourseBundle就可以了。

ResourceBundle resourceBundle = ResourceBundle.getBundle(filename

.replace(".properties", ""));

String temp = resourceBundle.getString(key);

0

0

分享到:

2014-03-07 10:57

浏览 1658

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值