java - 如何通过java程序读取.evtx扩展名文件

标签 java

我不知道这是否可能,但我的要求是 - 我必须从我的 java 程序中名为 System.evtx 的文件中读取数据。

当我像简单的文件读取一样这样做时,我得到了一些 ASCII 字符,或者我可以说格式不可读。

有什么办法可以解决这个问题吗?

提前致谢。

最佳答案

如果没有文件内容的示例,这是一个很难回答的问题,但经过一番谷歌搜索后,它似乎是一个 Windows 事件日志文件?所以我不确定确切的格式,但显然它们可以使用 powershell 转换为 .csv 文件:

Get-WinEvent -Path c:\path\to\eventlog.evtx |Export-Csv eventlog.csv

一旦采用 csv 格式,您就可以以传统的 csv 方式简单地解析它们,或者只是用逗号等分隔。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class CSVReader {

    public static void main(String[] args) {

        String csvFile = "eventlog.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ",";

        try {

            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {

                // use comma as separator
                String[] line = line.split(cvsSplitBy);

for(int i=0;i<line.length;i++){
System.out.println(line[i]);
}

            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

关于java - 如何通过java程序读取.evtx扩展名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497285/

相关文章:

java - ThreadMXBean.dumpAllThreads() 最大深度

java - repaint() 不适用于 JDialog

java - 线程在 BigDecimal.compareTo 中挂起

java - 如何摆脱类型转换?

java - 返回修改后的整数,但我的 getter 函数不会修改它。有任何想法吗?

java - 责任链 : loop or next?

java - 结合 TCP 套接字和 Restful 端点

java - 在 JNI 中使用 GetIntArrayElements 打印数组元素

java - 使用 CSV 更新 TableView

java - 部署spring项目出错