Tôi có nhật ký tệp mà tôi muốn phân tích cú pháp và đang gặp một số vấn đề. Lúc đầu, có vẻ như nó sẽ đơn giản. Tôi sẽ tiếp tục và đăng nguồn mà tôi đã đưa ra và sau đó giải thích những gì tôi đang cố gắng làm.Tệp văn bản phân tích cú pháp Groovy
File Tôi đang cố gắng để phân tích chứa dữ liệu này:
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
mã nguồn của tôi (bên dưới) về cơ bản chia tay dòng tập tin bằng cách dòng và sau đó chia tách dòng thành hai (key: giá trị).
Nguồn:
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
}
Vấn đề với nguồn của tôi là khi tôi sử dụng thu khí của tôi (như $ dataList.Performance) nó chỉ cho thấy người cuối cùng trong file chứ không phải là hai.
Vì vậy, tôi tự hỏi, làm cách nào để phân tích cú pháp tệp để nó giữ thông tin cho cả hai ổ đĩa cứng? Có cách nào để đóng gói thông tin vào một 'đối tượng ổ đĩa cứng'?
Bất kỳ và tất cả help is appreciated
Một vài lưu ý phụ:
Các tập tin là trên một máy cửa sổ (mặc dù các thông tin được nắm lấy từ một hệ thống nix)
Các tập tin văn bản là chia cho một tab, dấu hai chấm và khoảng trống (như được hiển thị trong mã nguồn của tôi) chỉ nghĩ rằng tôi sẽ nói rằng vì nó không giống như trên trang này.
Ahh, sức mạnh của việc tiêm. ;) – Blacktiger
Mọi người đều thích tiêm ;-) –
Wow, cảm ơn chồi. Tôi không có ý làm phiền bạn, nhưng bạn có thể bình luận thứ hai, giống như bạn đã làm với cái đầu tiên? Hoặc nếu đó là quá nhiều công việc, có lẽ giải thích cách nó hoạt động. Cảm ơn bạn một lần nữa, thử nghiệm nó ra và hoạt động khá độc đáo. Theo như tải nó vào bộ nhớ, nó sẽ là tốt vì nó không phải là một số lượng lớn văn bản. – JohnStamos