【问题标题】:read linux config files using java使用java读取linux配置文件
【发布时间】:2015-11-04 15:58:26
【问题描述】:

我在我的项目中需要一些帮助,这是一个从 Linux 系统读取配置文件的 Java 构建应用程序。我想从这些文件中展示一些价值,如下所示:

//the code in config file
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.128 192.168.1.254;  
option subnet-mask              255.255.255.0;
option broadcast-address        192.168.1.255;#comment here
....
}

在应用程序中,它应该是这样打印的:

  network 1 : 192.168.1.0/24
  range : from 192.168.1.128 to 192.168.1.254
  mask : 255.255.255.0
  broadcast : 192.168.1.255

所以我需要从指定的参数中读取值,例如“选项子网掩码”到行尾是“;”并仅返回值“255.255.255.0”。 如果有注释“#”,不要做任何事情,直接转到下一行。 每个配置都从“{”开始,到“}”结束。因此,当涉及到“}”时,它应该停止并转到下一个网络(如果有)。

【问题讨论】:

    标签: java file properties config


    【解决方案1】:

    首先,您需要用 Java 打开文件。您可以使用 InputStreamReader 或其他输入阅读器来执行此操作。阅读这些行并使用 Java 正则表达式包来匹配您正在寻找的模式。这个link 将有助于模式匹配。

    【讨论】:

    • 我做了类似的事情
    • 您能否明确说明问题所在?或者您尝试过的方法不起作用?谢谢
    • 我做 loob 读取留置权并测试该行是否包含子网之类的单词但是当我转到下一个单词 while (sc.hasNextLine()) { String line = sc.nextLine( ); if(line.contains("subnet")) { String ss = sc.next(); System.out.println(ss);}}
    • 做这样的事情:
    • 对不起,对于之前的评论:看这个 [page] (docs.oracle.com/javase/tutorial/essential/regex/matcher.html)。如果该行包含关键字(例如子网),请创建一个模式来查找您正在搜索的字符串(IP 地址格式)并调用 match,这将为您提供匹配发生位置的索引,您可以从那里获取子字符串并打印它们。我认为 Java 提供了类似于 python re.find() 的方法,但它没有;这对你的情况会更简单。
    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多