用Java组合日志文件(一些gzip)

时间:2017-12-13 02:55:01

标签: java zcat

我想知道是否有人可以帮助我从Java中完成此操作。

zcat -f -- $(ls -t a_log_file.log*) > combined.log

a_log_file.loga_log_file.log.gz.1a_log_file.log.gz.2 ... 我还没有找到任何不太复杂的东西。我想,我也可以以某种方式从Java运行它,但这感觉就像是一个错误的解决方案。

1 个答案:

答案 0 :(得分:0)

File logDir = new File("path/to/log/files");
    File[] nonGzippedFiles = logDir.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return !pathname.getName().contains("gz");
        }
    });
    FileOutputStream combinedLogFiles = new FileOutputStream(new File("path/to/combined.log"));
    for (File nonGzippedFile : nonGzippedFiles) {
        FileInputStream fileInputStream = new FileInputStream(nonGzippedFile);
        int read = 0;
        byte[] buff = new byte[128];
        while ((read = fileInputStream.read(buff)) > 0) {
            combinedLogFiles.write(buff, 0, read);
        }
        fileInputStream.close();
    }
    combinedLogFiles.close();

    // path/to/combined.log now contains all the contents of the log files

你必须进行一些异常处理。这也不是已经gzipped日志。我假设那部分