我有一个文本文件和一个类(Reader),它读取文本文件并将每一行存储在String []
中。
String name;
String [] lines;
Reader(String name){
this.name = name;
}
public String toString(){
return this.name;
}
public readFile(String filename){
String line = "";
int i = 0;
try{
BufferedReader reader = new BufferedReader(new FileReader(filename));
while(line = reader.readLine()) != null){
lines[i] = line;
i++;
}// while
reader.close();
}
catch(etc...){}
}
我希望在jsp页面上打印表格中的每个数组元素。
Reader r = new Reader("test");
out.print(r.toString());
工作并打印'测试',但......
r.readFile("test.txt")
for (int i=0; i < r.lines.length; i++)
out.print(r.lines[i])
不...但是如果我在命令行上运行它,它会打印[]精细
行如何在网络环境中进行此操作?
答案 0 :(得分:0)
尝试更换以下内容:
BufferedReader reader = new BufferedReader(new FileReader(filename));
与
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream(filename)));
这应该有效,因为输入文件与Reader
在同一个包中。
<强>更新强>
我认为问题在于TeamData
。
readFile("skytest\\data.file")
这不是文件的有效路径。既不在文件系统中,也不在类路径中。
由于data.file位于类路径中,因此您可以使用getResourceAsStream
加载它。
并且,由于skytest是根目录(包),"/skytest/data.file"
在这里也是有效的(前导/
表示相对包根)。或者,由于该文件与TeamData
位于同一个包中,因此文件名应该足够"data.file"
。
所以,使用以下内容:
readFile("data.file")
并更改以下内容:
BufferedReader reader = new BufferedReader(new FileReader(requiredFile));
到
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream(requiredFile)));
此外,以下是一种不好的做法(称为吞咽异常):
catch (IOException ioe) {
//do something about the exception here
return false;
}
答案 1 :(得分:0)
尝试这样的事情:
BufferedReader reader = null;
try
{
reader = new BufferedReader(new FileReader(new File("path/to/filename.txt")));
String nextLine = reader.readLine();
while (nextLine != null)
{
System.out.println(nextLine); // do stuff with the line you read in.
nextLine = reader.readLine();
}
reader.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}