我有一个文件日志,我想解析并有一些问题。起初,它似乎很简单。我会继续发布我提出的源代码,然后解释我正在尝试做的事情。Groovy解析文本文件
我试图解析该文件包含了这样的数据:
HDD Device 0 : /dev/sda
HDD Model ID : ST3160815A
HDD Serial No : 5RA020QY
HDD Revision : 3.AAA
HDD Size : 152628 MB
Interface : IDE/ATA
Temperature : 33 C
Health : 100%
Performance : 70%
Power on Time : 27 days, 13 hours
Est. Lifetime : more than 1000 days
HDD Device 1 : /dev/sdb
HDD Model ID : TOSHIBA MK1237GSX
HDD Serial No : 97LVF9MHS
HDD Revision : DL130M
HDD Size : 114473 MB
Interface : S-ATA
Temperature : 30 C
Health : 100%
Performance : 100%
Power on Time : 38 days, 11 hours
Est. Lifetime : more than 1000 days
我的源代码(下同)基本打破了由行的文件行,然后分割线分成两个(键:值)。
来源:
def dataList = [:]
def theInfoName = "C:\\testdata.txt"
File theInfoFile = new File(theInfoName)
def words
def key
def value
if (!theInfoFile.exists()) {
println "File does not exist"
} else {
theInfoFile.eachLine { line ->
if (line.trim().size() == 0) {
return null
} else {
words = line.split("\t: ")
key=words[0]
value=words[1]
dataList[key]=value
println "${words[0]}=${words[1]}"
}
}
println "$dataList.Performance" //test if Performance has over-written the previous Performance value
}
与我的源的问题是,当我用我的getter方法(如$ dataList.Performance)只显示了文件,而不是两个在最后一节。
所以我想知道,我该如何解析文件,以便它保持两个硬盘驱动器的信息?有没有办法将信息打包到“硬盘驱动器对象”中?
任何和所有帮助表示赞赏
一些旁注:
该文件是Windows的机器(即使信息是从尼克斯系统抢下)
的文本文件是在按标签,冒号和空格拆分(如我的源代码中所示),只是认为我会说,因为它看起来不像这个页面。
啊,注射的力量。 ;) – Blacktiger 2010-07-29 14:28:44
大家都喜欢注入;-) – 2010-07-29 16:10:31
哇,谢谢你。我并不是想打扰你,但是你能评论第二个,就像你对第一个做的那样?或者如果这是太多的工作,也许解释它是如何工作的。 再次感谢,测试它,并工作得非常好。至于将其加载到内存中,它应该没问题,因为它不是大量的文本。 – JohnStamos 2010-07-30 07:11:01