2013-08-26 35 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

相關問題