2014-02-24 35 views
0

我有以下位置FileNotFound例外一邊閱讀從構造函數的參數類路徑文件中春

C:/Tomcat6.0/webapps/myapp/WEB-INF/classes/document/mydoc.txt 

我得通過構造函數注入該文件的位置並讀取文件的文件mydoc.txt。

public DocumentReader(String path) throws IOException, FileNotFoundException { 
BufferedReader reader = new BufferedReader(new FileReader(path)); 
String line = null; 
StringBuilder stringBuilder = new StringBuilder(); 
while ((line = reader.readLine()) != null) { 
    stringBuilder.append(line); 
} 
String doc = stringBuilder.toString(); 
} 

我已經在applicationContext.xml中配置了文件位置,如下所示。

<bean id="DocumentReader" class="com.myapp.DocumentReader" > 
<constructor-arg value="classpath:document/mydoc.txt"></constructor-arg> 
</bean> 

但是,我得到FileNotFound異常,同時運行的應用程序。有沒有其他方法可以從這個位置讀取文件?

異常

java.io.FileNotFoundException: classpath:document\mydoc.txt(The filename, directory name, or volume label syntax is incorrect) 
+0

你可以嘗試直接在WEB-INF /webapps/myapp/WEB-INF/mydoc.txt保持此文件,然後在bean定義值類路徑:mydoc.txt –

+0

我想,你的'document'目錄已在'classpath'。所以,你只需要配置'value =「classpath:mydoc.txt」' – CycDemo

+0

@RaviKumar:我嘗試了你說的,但我仍然得到相同的異常** java.io.FileNotFoundException:classpath:mydoc.txt(The系統找不到指定的文件)** – user3244519

回答

2

更改您的構造方法來代替字符串org.springframework.core.io.Resource。

如果您的構造函數參數的類型爲String,則Spring會像您寫下的那樣插入該值。然後,您的FileReader尋找一個文件夾名爲mydoc.txt文件classpath:document如果你的構造函數參數的類型的ressource的(這在某些操作系統 - - 如Windows甚至不是一個有效的文件夾名稱)

,春天假設您正在注入的字符串是Spring-Ressource-Path併爲您解決這個問題。