我有一個文件日誌,我想解析並有一些問題。起初,它似乎很簡單。我會繼續發佈我提出的源代碼,然後解釋我正在嘗試做的事情。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