我已经阅读了有关阅读a.config的相关帖子。策略是使用property和方法getproperty()。
但是,如果我只有价值观呢?我怎样才能提取所有价值? 例如:
server1 127.0.0.1 50000
server2 127.0.0.1 50001
server3 127.0.0.1 50002
server4 127.0.0.1 50003
server5 127.0.0.1 50004
server6 127.0.0.1 50005
server7 127.0.0.1 50006
server8 127.0.0.1 50007
我想将整个文件作为stringbuilder读取并解析它,但我不确定是否还有其他更好的方法来处理此配置文件。
答案 0 :(得分:1)
您也可以使用org.apache.commons.io.FileUtils,
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
public class SomeClass
{
public static void main(String argp[]) throws Exception
{
List<String> lines = FileUtils.readLines(new File("d:/temp/config.txt")) ;
List<Config> configs= new ArrayList<Config>() ;
for(String line:lines)
{
line = line.trim();
if(line.equals(""))
continue ;
Config config= new Config() ;
String[] values= line.split(" ");
config.server = values[0] ;
config.ip = values[1] ;
config.ip = values[2] ;
configs.add(config) ;
}
for(Config config:configs)
System.out.println(config) ;
}
public static class Config
{
public String server = "" ;
public String ip = "" ;
public String port = "" ;
@Override
public String toString()
{
return "config [server=" + server + ", ip=" + ip + ", port=" + port
+ "]";
}
}
}
答案 1 :(得分:0)
看来你的计划是读取这个文件并使用serverid ipaddress和port创建一个复杂的对象?
如果是这样,有数百个在线阅读文件的例子
String fileName = "c://lines.txt";
//read file into stream, try-with-resources
String[] valueSplit;
List<SomeObject> list = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
valueSplit = stream.split(" ");
list.add(new SomeObject(valueSplit[0],valueSplit[1], valueSplit[2]);
} catch (IOException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
您可以使用.properties
文件类型。
在此,您可以声明该字段,然后使用.getProperty()方法提取它们。
有了这个,你不必担心解析内容。
示例强>
config.properties
server1=127.0.0.1:50000
server2=127.0.0.1:50001
server3=127.0.0.1:50002
server4=127.0.0.1:50003
server5=127.0.0.1:50004
server6=127.0.0.1:50005
server7=127.0.0.1:50006
server8=127.0.0.1:50007
要检索的java代码
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Test {
public static void main(String[] args) {
Properties config = new Properties();
try {
InputStream input = new FileInputStream(new File("path/to/file"));
config.load(input);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(config.getProperty("server1"));
System.out.println(config.getProperty("server2"));
System.out.println(config.getProperty("server3"));
System.out.println(config.getProperty("server4"));
System.out.println(config.getProperty("server5"));
System.out.println(config.getProperty("server6"));
System.out.println(config.getProperty("server7"));
System.out.println(config.getProperty("server8"));
}
}
<强>输出:强>
127.0.0.1:50000
127.0.0.1:50001
127.0.0.1:50002
127.0.0.1:50003
127.0.0.1:50004
127.0.0.1:50005
127.0.0.1:50006
127.0.0.1:50007