簡體   English   中英

如何使用Java從txt文件讀取/獲取一些特定信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM