2013-08-26 36 views
1

我有包含版本号的文件。例如何从文件获取特定值到JSP页面?

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

我想从文件foo.cf值7.1(它可以是任何东西)到我的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

看到我的答案使用正则表达式1。 – 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 

我意思是key = value的内容类型。那么下面的代码是检索版本的一种复杂方式。

  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); 

       } 
      } 

其他行逐行读取。

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中的文件是不是好的做法

请做到这一点在Servlet的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(); 

您的申请对象中加入这个servlet的

request.setAttribute("version",version); 

将以下内容添加到您的jsp页面

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

我不使用servlet我可以直接从JSp –

+0

访问它是的,你可以做..... – Prabhakaran

相关问题