我如何在Web上下文中使用java类?

时间:2011-12-28 22:49:42

标签: java jsp tomcat

我有一个文本文件和一个类(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])

不...但是如果我在命令行上运行它,它会打印[]精细

如何在网络环境中进行此操作?

2 个答案:

答案 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();
    }