Как я могу использовать Java-классы в веб-контексте? - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть текстовый файл и класс (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 голосов
/ 29 декабря 2011

Попробуйте что-то вроде этого:

    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();
    }
0 голосов
/ 29 декабря 2011

Попробуйте заменить следующее:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...