我正在与GWT和Netbeans开发一个项目。我有一个RPC。我在服务器包“org.myname.server”中放了一个文本文件,我想用属于GWTServiceImpl类的服务器端方法读取它。文本文件和文件GWTServiceImpl.java位于同一个包中。代码如下:
String text="";
try
{
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
while((line = br.readLine()) != null)
{
text=text+line;
System.out.println("here is the line: "+line);
}
br.close();
}
catch (Exception e) { }
return text;
它说它无法访问该文件。我没有包含整个路径,因为该文件位于该方法的同一文件夹中。那为什么不起作用?
答案 0 :(得分:2)
文件路径不是与“类”相关,而是与“当前工作目录”相关,因此它取决于服务器的启动方式,并且可能在开发和生产方面有所不同。
如果文件在您的网络应用中打包为资源,请使用相应的加载方式:如果它位于WEB-INF/classes
或WEB-INF/lib
中的JAR中,则使用getClass().getResourceAsStream("file.txt")
;否则使用ServletRequest#getResourceAsStream()
。
答案 1 :(得分:1)
是的,托马斯是对的。因此,为了创建缓冲读取器,代码如下:
InputStream is= getClass().getResourceAsStream(filepath);
BufferedReader br = new BufferedReader(new InputStreamReader(is));