我正在尝试从“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文件:
// User.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 ==> User.json
答案 0 :(得分:4)
FileReader
构造函数将文件名称作为参数。您传递了一个相对文件名,因此Java在文件系统的当前目录中查找它,该目录是用于启动Tomcat的java命令的目录。
不仅路径不正确,而且您甚至不想使用文件,因为您要阅读的是资源,它位于war文件,甚至是war文件中的jar文件。
由于类加载器,您希望使用此资源,因为必须使用相同的加载机制(基于战争和jar和包)将此资源作为.class文件找到。你应该使用
InputStream in = UserList.class.getResourceAsStream("/br/com/servtech/model/json/User.json");