我的程序需要从多行 .ini 文件中读取,我已经做到了读取以 # 开头的每一行并打印它。但我只想记录 = 符号后面的值。该文件应如下所示:
#music=true
#Volume=100
#Full-Screen=false
#Update=true
这就是我想要打印的内容:
true
100
false
true
这是我当前正在使用的代码:
@SuppressWarnings("resource")
public void getSettings() {
try {
BufferedReader br = new BufferedReader(new FileReader(new File("FileIO Plug-Ins/Game/game.ini")));
String input = "";
String output = "";
while ((input = br.readLine()) != null) {
String temp = input.trim();
temp = temp.replaceAll("#", "");
temp = temp.replaceAll("[*=]", "");
output += temp + "\n";
}
System.out.println(output);
}catch (IOException ex) {}
}
我不确定是否replaceAll("[*=]", "");真正意味着任何东西,或者如果它只是搜索所有这些字符。如有任何帮助,我们将不胜感激!
最佳答案
尝试以下操作:
if (temp.startsWith("#")){
String[] splitted = temp.split("=");
output += splitted[1] + "\n";
}
说明:
要处理仅以所需字符开头的行,请使用 String#startsWith 方法。当您有要从中提取值的字符串时,String#split
会将给定文本与您作为方法参数提供的字符分开。因此,在您的情况下,=
字符之前的文本将位于数组中的位置0
处,您要打印的文本将位于位置1
处。
另请注意,如果您的文件包含许多以 #
开头的行,明智的做法是不要将字符串连接在一起,而是使用 StringBuilder/StringBuffer
将字符串添加在一起.
希望有帮助。
关于java - 缓冲读取器找到特定的行分隔符然后读取该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073810/