天天看點

java 使用相對路徑讀取檔案

java 使用相對路徑讀取檔案

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);

  ……

 *我們留意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的例子:

 *參見之前寫的文章“通過虛拟路徑或相對路徑讀取一個xml檔案,避免寫死”。

 *内容如下:

 java使用相對路徑讀取xml檔案:

一、xml檔案一般的存放位置有三個:

1.放在WEB-INF下;

2.xml檔案放在/WEB-INF/classes目錄下或classpath的jar包中;

3.放在與解析它的java類同一個包中,不一定是classpath;

二、相對應的兩種使用相對路徑的讀取方法:

方法一:(未驗證)

将xml檔案放在WEB-INF目錄下,然後

程式代碼:

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);

方法三:xml在随意某個包路徑下:

ClassLoader classLoader=HotspotXmlParser.class.getClassLoader();

InputStream in=classLoader.getResourceAsStream(s_xmlpath);

來源:http://www.blogjava.net/flysky19/articles/93492.html

本文轉自夏雪冬日部落格園部落格,原文連結:http://www.cnblogs.com/heyonggang/p/3158008.html,如需轉載請自行聯系原作者