1

我有包含版本号的文件。例如

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

        }
4

4 回答 4

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");%> 
于 2013-08-26T12:29:29.870 回答
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();
    }
}
于 2013-08-26T11:50:43.017 回答
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 之间的任何值,而不考虑空格。

于 2013-08-26T11:59:36.483 回答
-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);

                }
            }

否则逐行阅读。

于 2013-08-26T11:57:24.087 回答