Java读取资源文件-1

JAVA 使用相对路径读取资源文件
2011-02-23 15:17
1.java project环境,使用java.io用相对路径读取文件的例子:
*目录结构:
  DecisionTree
            |___src
                 |___com.decisiontree.SamplesReader.java
            |___resource
                 |___train.txt,test.txt


*SamplesReader.java:

String filepath="resource/train.txt";//注意filepath的内容;   File file=new File(filepath);   ……  

  String filepath="resource/train.txt";//注意filepath的内容;

  File file=new File(filepath);

  ……


*我们留意filepath的内容,java.io默认定位到当前用户目录("user.dir")下 ,即:工程根目录"D:\DecisionTree"下,因此,此时的相对路径(以user.dir为基路径的路径)为"resource/train.txt"。这样,JVM就可以根据"user.dir"与"resource/train.txt"得到完整的路径(即绝对路径)"D:\DecisionTree\resource\train.txt",从来找到train.txt文件。

*注意:相对路径的起始处无斜杆"/" ;例如:
filepath="resource/train.txt";
而不是filepath="/resource/train.txt"; //error!

2、javaEE环境,使用Classloader用相对路径读取xml的例子:

*内容如下 :
java使用相对路径读取xml文件:
A、xml文件一般的存放位置有三个:
1.放在WEB-INF下;
2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中;
3.放在与解析它的java类同一个包中,不一定是classpath;

B、相对应的两种使用相对路径的读取方法:

方法一:(未验证)
将xml文件放在WEB-INF目录下 ,然后
程序代码:

InputStream is=getServletContext().getResourceAsStream( "/WEB-INF/xmlfile.xml" );  

InputStream is=getServletContext().getResourceAsStream( "/WEB-INF/xmlfile.xml" );


方法二:将xml文件放在/WEB-INF/classes目录下或classpath的jar包 中,则可以使用ClassLoader的静态

方法getSystemResourceAsStream(String s)读取;
程序代码:

String s_xmlpath="com/spf/web/ext/hotspot/hotspotxml/hotspot.xml";   InputStream in=ClassLoader.getSystemResourceAsStream(s_xmlpath);  

String s_xmlpath="com/spf/web/ext/hotspot/hotspotxml/hotspot.xml";

InputStream in=ClassLoader.getSystemResourceAsStream(s_xmlpath);

方法三:xml在随意某个包路径下 :

String s_xmlpath="com/spf/web/ext/hotspot/hotspotxml/hotspot.xml";   ClassLoader classLoader=HotspotXmlParser.class.getClassLoader();   InputStream in=classLoader.getResourceAsStream(s_xmlpath);

你可能感兴趣的:(java,xml,Web,javaee,ext)