2015-06-01 5 views
0

У меня есть скрипт perl, который ищет последние измененные файлы в указанных папках. Когда поиск закончится этот скрипт поместить данные в виде текстового файла в структуру:Как я могу отделить поля в JSP от текстового файла?

[COMP] = folder1 
    [DATE] = 2015.06.01 08:12 
    [COMP] = folder1 
    [DATE] = 2015.06.01 05:27 
    [COMP] = folder1 
    [DATE] = 2015.05.31 11:44:44 

... и т.д.

Для отображения я должен использовать JSP, потому что сервер работает Tomcat.

Вот мой index.jsp:

<%@ page import = "java.io.*, java.util.*" %> 

<% 
ServletContext context = getServletContext(); 
String file = (context.getRealPath("/list.txt")); 
String s, list = new String(); 

try { 
     DataInputStream in = 
     new DataInputStream(
     new BufferedInputStream(
     new FileInputStream(file))); 
       while((s = in.readLine())!= null) { 
         list += s + "\n"; 
       } 
     in.close(); 
} 
catch(Exception e) {System.out.println(e);} 
%> 
<pre> 
<%=list%> 
</pre> 

Теперь "список" переменная содержит данные COMP и дата.

Итак, мой вопрос в том, как я могу отделить поля (COPM, DATE) в JSP от текстового файла?

Спасибо за ответы!

ответ

-1

Данные в файле хранятся как ключ & пары значений. Что вы должны сделать в JSP, вместо чтения файла как пара, вам нужно прочитать как файл свойств, используя класс java.util.Properties.

Код, как показано ниже, должен работать.

try{ 
    Properties props = new Properties(); 
    props.load(file); 
    String value1 = props.get("[COMP]"); 
    String value2 = props.get("[DATE]"); 
} 

Попробуйте.

+0

Это не сработает. Вы получите только две последние строки. Попробуйте. – EJP

0

Используйте индекс для отслеживания номеров строк. Если оно равно, добавьте список COMP, иначе добавьте в список DATE.

<%@ page import = "java.io.*, java.util.*" %> 

<% 
ServletContext context = getServletContext(); 
String file = (context.getRealPath("/list.txt")); 
String s = new String(); 
List<String> compList = new ArrayList<String>(); 
List<String> dateList = new ArrayList<String>(); 
int i = 0; 

try { 
    DataInputStream in = 
    new DataInputStream(
    new BufferedInputStream(
    new FileInputStream(file))); 
      while((s = in.readLine())!= null) { 
        if(i % 2 = 0) { 
        compList.add(s); 
        } else { 
        dateList.add(s); 
        } 
        i++; 
      }  
    in.close(); 
} 
catch(Exception e) {System.out.println(e);} 
%> 
<pre> 
<%=compList%> 
<%=dateList%> 
</pre> 
0

Они находятся на разных строках в текстовом файле. Вы просто должны прочитать их по отдельности:

DataInputStream in = 
    new DataInputStream(
    new BufferedInputStream(
    new FileInputStream(file))); 
    String comp, sdate; 
    while(True) { 
     comp = in.readLine(), 
     if (comp == null) { break;} 
     sdate= in.readLine(), 
     if (sdate== null) { break;} 
     // you have comp and sdate : use them and put result in list 
     } 
    in.close(); 

Вы можете использовать java.util.regex пакет для разбора каждой строки. Но если вы действительно хотите иметь хорошую презентацию, вам лучше использовать сервлет для синтаксического анализа ввода текстового файла, поместить элементы в список в атрибут запроса, переслать в файл jsp и использовать JSP для форматирования результата Java-код JSP трудно проверить и отладить не вкладывать в него интеллект.

0

Спасибо за ответы! Вот мое решение (не весь код wokring):

Смежные вопросы