[英]How can I read/get some specific informations from txt file using Java
使用Java從許多* .log文件中獲取某些特定信息時,我面臨一些困難。 我已經花了幾個小時進入這個論壇,但沒有找到我需要的東西。 首先,我想獲取這些信息並在控制台上打印它們,以確保我需要的所有信息都能正常工作。 * .log文件中的數據如下:
Date Logged: 10-22-2014 11:11:00 AM
Task Name: PROJECT_X_X00_SPI3
User ID: Operator Mode
System: PP/PS Series FlashCORE
Machine ID: 12345678910
Device: MACRONIX MX25L6473EM2 SO8
Data Source: X:\XPTO\PROJECT\BINARYFILE.bin
Sumcheck: 12345678
Process: Continuity/Blank Check/ID Check/Erase/Program/Verify/Auto Secure/Mark/Vision
Process Status: Job Begin Status: New Job, Job End Status: Stopped
TLWin Session ID: < none >
Job Start Time: 10-22-2014 03:38:57 AM
Job End Time: 10-22-2014 11:11:00 AM
Devices Total: 5051
Devices Passed: 5041
Devices Failed: 10
Overall Device Yield: 99.80%
Task Description: MX25L6473EM
Nominal Throughput: 722 dph
Job Throughput: 679 dph
這是我為了從* .log文件讀取所有數據而編寫的代碼:
public class ReadingDataTxt {
public static void main(String[] args) {
String dir = "F:\\XPTO";
File file = new File(dir);
for (String arq : file.list()) {
if (arq.endsWith(".log")) {
System.out.println("--------->" + arq + "<---------");
try {
System.out.println(reading(dir + "\\" + arq));
} catch (Exception e) {
}
}
}
}
private static String reading(String dir) throws Exception {
String line = " ", content = " ";
BufferedReader br = new BufferedReader(new FileReader(new File(dir)));
while ((line = br.readLine()) != null) {
if (!line.isEmpty()) {
content = new StringBuilder(content).append(line.concat("\n")).toString();
}
}
br.close();
return content;
}
}
我需要的最重要信息是第一個字符串前的數據(突出顯示):記錄日期: 2014年10月22日任務名稱: PROJECT_X_X00_SPI3設備: MACRONIX MX25L6473EM2 SO8設備總數: 5051設備失敗: 10設備總產量: 99.80 %
第二步是制作一個CSV文件,以便將這些信息放入數據庫中。
非常感謝!
您可以使用Java版本的Grok Parser。 您可以定義一個模式,文件中與該模式匹配的所有行都將被解析。
提供一個偽代碼
您可以使用StringBuilder
本身以及下面給出的解析邏輯來生成所需的字符串。 只要確保您在任何循環之外定義StringBuilder
。
要么
您可以獲取地圖Map<String, String> data = new HashMap<>();
並按要求的鍵/值填充它。 這樣您就可以通過其他方法將其提取出來。
現在,對於每一行,您可以
String[] tokens = line.trim().split(":");
if(tokens.length >= 2){
data.put(tokens[0].trim(), tokens[1].trim());
// or append to stringbuilder
}
此外,您還可以在此處為僅要放入地圖的特定令牌(密鑰)進行支票檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.