我的文件包含版本号。例如
foo.cf
something
somevalue
somevalue
........
.......
version = "7.1"
........
.........
我想从文件foo.cf到我的JSP页面得到值7.1(可以是任何东西)。 任何人都可以帮我怎么做 我知道如何读取文件但不知道如何获取特定值。这是我从JSP读取文件的方式。如果我的代码有误,请纠正我
BufferedReader reader = new BufferedReader(new FileReader("foo.cf"));
StringBuilder sb = new StringBuilder();
String line;
while((line = reader.readLine())!= null){
}
答案 0 :(得分: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();
}
}
答案 1 :(得分: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,无论空格如何。
答案 2 :(得分: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");%>
答案 3 :(得分:-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);
}
}
其他方面逐行阅读。