2012-02-29 54 views
0

我试图用持有的主机/网站的列表,并为每一个时间频率配置文件。如何在我的Java程序中使用配置文件?

前。

google.com 15s 
yahoo.com 10s 

我的目标是在每个时间段(15秒)从配置文件ping每个网站。

如果我只是读取配置文件,并输入主机/时间到单独的阵列?

好像有一个更有效的方法...

+2

这是什么配置文件的格式?如果它适合通过['Properties'(http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html)所需要的格式,它可能使用节省一些实施时间[' Properties.load()'](http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.Reader%29) – amit 2012-02-29 01:16:41

+0

_Seems像有一个更有效的方法_你可以像@duffymo所做的那样显示如下。关键查找方法比使用多维数组更方便快捷。你有没有别的想法?如果配置文件本身没有约束,也可以使用属性文件。 – 2012-02-29 01:38:25

+0

配置文件没有特定的格式。通过键查找,你的意思是像“为url1 = google.com”中的配置文件,以获取主机,我可以使用“主机1 = cfg.getProperty(‘URL1’)”? 我无法理解如何从配置文件中取出所有主机/时间而不知道文件中的内容(如果有意义的话)... 假设有200个不同的主机需要在配置文件...我的程序只是启动并运行配置文件,并以自己的相应频率ping每一个。 – TT52 2012-02-29 02:05:16

回答

0

下面是如何使用属性文件的简要介绍。

您可以创建扩展.properties文件(如Windows下请确保您有显示文件扩展名)在你的项目的根。该属性可以被定义为对:

google.com=15 
yahoo.com=10 

在Java中,

为了得到一个特定的URL的平时间:

final String path = "config.properties"; 

Properties prop = new Properties(); 

int pingTimeGoogle = prop.load(new FileInputStream(path)).getProperty("google.com"); 

循环通过性能,并得到整个列表:

final String path = "config.properties"; 

Properties props = new Properties().load(new FileInputStream(path)); 
Enumeration e = props.propertyNames(); 

while (e.hasMoreElements()) { 
    String key = (String) e.nextElement(); 
    System.out.println(key + "=" + props.getProperty(key)); 
} 

编辑:这里有一个方便的方法来将属性转换为Map(属性实现Map接口):

final String path = "config.properties"; 

Properties props = new Properties().load(new FileInputStream(path)); 

Map<String, Integer> pingUrlTimes = new HashMap<String, Integer>((Map) props); 

骑自行车通过HashMap可以这样做:

Iterator iterator = pingUrlTimes.keySet().iterator(); // Get Iterator 

while (iterator.hasNext()) { 
    String key = (String) iterator.next(); 

    System.out.println(key + "=" + pingUrlTimes.get(key)); 
} 
+1

清除所有东西!谢谢! – TT52 2012-02-29 03:46:17

+0

很高兴帮助。我学到了一些东西。因为他知道他的东西,在@duffymo周围徘徊;) – 2012-02-29 03:48:30

2

为什么要用两个数组时,这两个项目是如此密切相关?

我把它们放入一个地图:

Map<String, Integer> pingUrlTimes = new HashMap<String, Integer>(); 
pingUrlTimes.put("google.com", 15); 
pingUrlTimes.put("yahoo.com", 10); 

int pingTime = pingUrlTimes.get("google.com"); 
+0

有没有办法用自动配置文件中的主机/时间值自动填充HashMap?我相信我理解你的答案,但如果我在配置中有200个不同的URL? – TT52 2012-02-29 02:11:29

+0

@ TT52“HashMap”的工作方式是信息存储在键+值对中。如果您有200个URL,则可以使用put方法将它们逐一存储为200对。当你需要ping一个给定的URL时,你可以使用get方法获得ping时间。 – 2012-02-29 03:22:02

+0

通过遍历每行读取文件并在循环内执行“put”操作。它能有多难? – duffymo 2012-02-29 10:08:46

相关问题