2013-08-26 2 views
1

У меня есть файл, который содержит номер версии. Для примераКак получить определенное значение из файла на страницу JSP?

foo.cf 
something 
somevalue 
somevalue 
........ 
....... 
version = "7.1" 
........ 
......... 

Я хочу, чтобы получить значение 7.1 (Это может быть что угодно) из файла foo.cf на мою страницу JSP. Может кто-нибудь помочь мне, как это сделать Я знаю, как читать файл, но не знаю, как получить конкретное значение. Вот как я читаю файл из JSP. Если мой код неправильно, пожалуйста, поправьте меня

 BufferedReader reader = new BufferedReader(new FileReader("foo.cf")); 
     StringBuilder sb = new StringBuilder(); 
     String line; 

     while((line = reader.readLine())!= null){ 

     } 
+0

Вам нужно использовать регулярное выражение – Makky

+0

вы можете привести пример –

+0

см. Мой ответ на использование регулярного выражения. – Makky

ответ

0

Может быть, вы могли бы попробовать это (не проверено):

BufferedReader reader = new BufferedReader(new FileReader("foo.cf")); 
StringBuilder sb = new StringBuilder(); 
String line; 
while((line = reader.readLine())!= null){ 
    if(line.startsWith("version") 
    { 
     //will give "7.1": 
     String version = line.substring(line.indexOf("="), 
      line.length()); 
     // use this instead of the line above to get 7.1: 
     // String version = line.substring(line.indexOf("="), 
      line.length()).replaceAll("\"","").trim(); 
    } 
} 
+0

Что делать, если строка строки версии имеет более одного "=". – Makky

+0

Код основан на примерной строке, предоставленной OP. Кроме того, менее вероятно, что строка версии содержит два «=». – Manish

-1

Если ваш файл вид ниже формате:

name=foo.cf 
xyz=abc 
xyz1=abc1 
version=7.1 

I средний ключ = значение вида контента. Затем приведенный ниже код является сложным способом получения версии.

  File file = new File("foo.cf"); 
      InputStream inputStream = null; 
      HashMap<String, String> defPropMap = new HashMap<String, String>(); 
      try { 
       inputStream = new FileInputStream(file); 
       Scanner scanner = new Scanner(inputStream); 
       while (scanner.hasNextLine()) { 
        String[] columns = scanner.nextLine().split("="); 
        if(columns.length == 2) 
         defPropMap.put(columns[0].trim(), columns[1].trim()); 
        else 
         defPropMap.put(columns[0].trim(), null); 
       } 

      } catch (FileNotFoundException e) { 
       logger.warn("Caught FileNotFoundException", e); 

      } 
      finally{ 
       try { 
        inputStream.close(); 
       } catch (IOException e) { 
        logger.warn("Caught IOException", e); 

       } 
      } 

другойswise line by line прочитайте.

0

Для этого вы можете использовать регулярное выражение.

Это пример. Вам нужно будет изменить это на свое требование.

package snippet; 

import java.io.IOException; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 



public class Test { 

    public static void main(String[] args) { 
     String test = "foo.cf something somevalue somevalue ........ ....... version = \" 7.1 \" ........ ........."; 

     String exp = ".*version\\s*=\\s*\"([^\"]+)"; 
     System.out.println(runSubRegex(exp, test)); 

    } 

    private static String runSubRegex(String regex, String tag) { 
     Pattern p = Pattern.compile(regex); 
     Matcher matcher = p.matcher(tag); 
     if (matcher.find()) { 
      return matcher.group(1); 
     } 
     return null; 

    } 

} 

Это будет печатать любое значение между ними version=" " в этом случае, независимо от 7.1 пространств.

0

доступа к файлу в Jsp не является хорошей практикой

Пожалуйста, сделайте это в doPost сервлета() или doGet метод()

String version =""; 
BufferedReader br = new BufferedReader(new FileReader("foo.cf")); 
String line; 
while ((line = br.readLine()) != null) { 
     line = line.trim(); 
     if(line.startsWith("version")){ 
       String[] strings = line.split("="); 
       version = strings[1]; 
       break; 
      } 
} 
br.close(); 

Добавить это в пределах вашего объекта запроса в сервлет

request.setAttribute("version",version); 

Добавить на вашу страницу jsp:

<% String version = (String)request.getAttribute("version");%> 
+0

Я не использую сервлет, могу ли я получить к нему доступ напрямую от JSp –

+0

да, вы можете сделать ..... – Prabhakaran