2014-01-11 74 views
2

我想從類「UserList.java」中讀取「User.json」文件,但我不能。我正在JSP/Servlet中開發,我不喜歡在服務器文件夾(TOMCAT)的環境中閱讀。如何閱讀不同軟件包中的資源文件?

我試試吧:

// User.java

Gson gsonObject = new Gson(); 
String res = gsonObject.toJson(new FileReader("User.json")); 

System.out.println("User ==> JSON " + res); 

結果:

java.io.FileNotFoundException: User.json 

JSON文件:

//用戶。 JSON

{ 
    "user": { 
     "type": "text" 
     }, 
    "name": { 
     "type": "text" 
     }, 
    "password": { 
     "type": "password" 
    }, 
    "characterName": { 
     "type": "combo", 
     "id": "rolls" 
    } 
} 

的軟件包如下:

br.com.servtech.servlet.list ==> UserList.java
br.com.servtech.model.json ==>用戶.json

+1

你把這個文件放在哪裏?你確定你給參數的路徑是正確的嗎?它可以幫助你使用絕對路徑 –

+0

包裝如下: br.com.servtech.servlet.list ==> UserList.java br.com.servtech.model.json ==> User.json –

回答

3

構造函數FileReader需要文件名稱作爲參數。您將它傳遞給一個相對文件名,所以Java正在文件系統上的當前目錄中查找它,這是用於啓動Tomcat的java命令的啓動目錄。

不僅路徑是這樣不正確的,但你甚至不希望使用文件,因爲你想讀什麼是資源這是WAR文件裏,甚至內部的JAR文件在戰爭文件裏面。

感謝類加載器,因此需要使用此資源,因爲必須使用相同的加載機制(基於戰爭和JAR包以及包)作爲.class文件找到該資源。因此你應該使用

InputStream in = UserList.class.getResourceAsStream("/br/com/servtech/model/json/User.json"); 
+0

**好極了!** 謝謝JB Nizet! –

相關問題