private static String getXmlContent()throws IOException {
Reader f = new InputStreamReader(Class().getResourceAsStream("/weather/l"));
BufferedReader fb = new BufferedReader(f);
StringBuffer sb = new StringBuffer("");
String s = "";
while((s = fb.readLine()) != null) {
sb = sb.append(s);
女孩男孩一个样}
String();
合资车}
ad;
import java.io.*;
public class Resource {
public void getResource() throws IOException{
//返回读取指定资源的输入流
InputStream Class().getResourceAsStream("/l"); BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((adLine())!=null)
System.out.println(s);
}
}
这个类是jar包中的类,同时jar根下还有个l文件。
教师节送老师什么礼物好
ClassLoader classloader = Thread.currentThread().getContextClassLoader(); InputStream is = ResourceAsStream("com/xxx/l");
一般情况下properties文件都是在工程内使用的,如果application打成jar包之后,修改properties文件后就需要重新打jar,很麻烦。
于是把properties文件提到jar包统计目录,这样修改后不用重新打包了,用起来方便一点。
代码如下:
String proFilePath = Property("user.dir") + "\\filename.properties";
InputStream in = new BufferedInputStream(new FileInputStream(proFilePath)); ResourceBundle resourceBundle = new PropertyResourceBundle(in);
首先是读取并解析jar包中的xml配置文件,我们解析的方法parse所在类和配置文件l都在jar包a中。所以考虑了相对位置,即直接在parse方法中写“l”来解析,结果肯定报不到,用class反射来getResource(String name).getPath(),在非打包的测试环境OK,但是打到jar包里面就不行了。后来用ClassLoader().getResource("").getPath()得到的path前面老有一个file:。而如果写死了并打到jar包里,也是不行,jar包名字后总有个!号。后来参看了网上许多人的意见,打算用流
浏览器阻止弹窗读取出来,打成个临时文件再用file读。即getResourceAsStream()。感觉对我的功能来说特麻烦。我解析xml用的jdom。后来才发现SAXBuilder对象的build构造中有一个InputStream可以用,哎~还是自己平常没多记,这样就简单了嘛~saxBuilderObj.build(ClassLoader().getResouceAsStream("resN ame"));就OK了。这个xml配置文件和解析的类放到同一目录下即可正常解析喽!不知道时好郁闷,知道了就特简单吧。
Java开发中,最终的程序发布一般是要打成jar包形式的,而有一些配置文件是放在jar里面的,这样在做File形式的读取时,就会发现读不到相应的文件。下面提供一种解决方式:文章出处:飞诺网(www.diybl):www.diybl/course/3_program/java/javajs/20090924/17699 5.html
String fileName = "/fig";
InputStream in = getClass().getResourceAsStream(fileName);
BufferedReader br = null;
try{
br = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = br.readLine()) != null){
System.out.println(line);
}
br.close();
} catch (Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if (br != null){
try{
br.close();狐妖小红娘主题曲
诸葛亮诸葛暗} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文章出处:飞诺网(www.diybl):www.diybl/course/3_program/java/javajs/20090924/17699 5.html
jar包中的类如何读取包内和包外的配置文件
最近将代码打包成jar包,关于如何处理读取配置文件的问题特此记录一下。
Java代码
out.properties
a.jar
-com
-a.class
-in.properties
out.properties
a.jar
-com
-a.class
-in.properties
如上所示,out.properties是于a.jar包在同一文件目录下;
in.properties是在a.jar包内部的。
关于a.class如何读取jar内或jar外的配置文件,
如下所示:
Java代码
FileInputStream inputStream1 = new FileInputStream("out.properties"); InputStream inputStream2 = ResourceAsStream("/in.properties");
FileInputStream inputStream1 = new FileInputStream("out.properties"); InputStream inputStream2 = ResourceAsStream("/in.properties");
另外,Log4j的配置文件log4j.properties也可以放在和jar包同级目录下,会自动生效。
如果xml文件和jar包在同一目录下,那么和在classpath中没什么区别。可以直接读取、加载
File file = new File("D:/zj.txt");
InputStream is = new FileInputStream(file)
is就可以从该file里读取数据了,
int length = 0;
byte[] b = new byte[200];
while(-1 != ( length = is.read(b[200]) )
{
System.out.print(new String(b, 0, length));
}
is.close();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论