Commit 0916374e by zhugs

refactor:代码优化

parent 16478d06
import database.InsertData; import database.InsertData;
import execl.ExcelHandlerFactory;
import text.TextHandlerFactory; import text.TextHandlerFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import util.ConfigUtil; import util.ConfigUtil;
...@@ -12,6 +13,7 @@ import java.util.function.Predicate; ...@@ -12,6 +13,7 @@ import java.util.function.Predicate;
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
// 监听 text log文件
Path dirText = Path.of(ConfigUtil.getWatchDir()); Path dirText = Path.of(ConfigUtil.getWatchDir());
// 设置要匹配的文件规则 // 设置要匹配的文件规则
Predicate<File> textFilter = file -> { Predicate<File> textFilter = file -> {
...@@ -25,19 +27,17 @@ public class Main { ...@@ -25,19 +27,17 @@ public class Main {
} }
return true; return true;
}; };
new DirWatcher(dirText, textFilter, new TextHandlerFactory()).startWatch(); new DirWatcher(dirText, textFilter, new TextHandlerFactory()).startWatch();
// 监听 excel log文件 // 监听 excel log文件
// File dirExcel = new File("C:\\Users\\zhugso\\Projects\\chenyang\\testdata\\exc"); Path dirExcel = Path.of("C:\\Users\\zhugso\\Projects\\chenyang\\testdata\\exc");
// Predicate<File> excelFilter = file -> { Predicate<File> excelFilter = file -> {
// String name = file.getName(); String name = file.getName();
// return !name.contains("$"); return !name.contains("$");
// }; };
// new DirWatcher(dirExcel, excelFilter, new ExcelHandlerFactory()).startWatch();
// ExcelFileWatcher excelWatcher = new ExcelFileWatcher(dirExcel, excelFilter);
// excelWatcher.startWatch();
// 阻塞主线程 // 阻塞主线程
log.info("程序已启动"); log.info("程序已启动");
......
...@@ -4,8 +4,12 @@ import database.InsertData; ...@@ -4,8 +4,12 @@ import database.InsertData;
import domain.ResultData; import domain.ResultData;
import handler.AbstractFileHandler; import handler.AbstractFileHandler;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import util.ZipUtil;
import java.io.*; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -14,8 +18,6 @@ import java.util.Date; ...@@ -14,8 +18,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@Slf4j @Slf4j
public class TextHandler extends AbstractFileHandler { public class TextHandler extends AbstractFileHandler {
...@@ -55,7 +57,7 @@ public class TextHandler extends AbstractFileHandler { ...@@ -55,7 +57,7 @@ public class TextHandler extends AbstractFileHandler {
} }
// 目标数据匹配 // 目标数据匹配
ResultData data = StringParser(patternText); ResultData data = stringParser(patternText);
data.setFileName(file.getName()); data.setFileName(file.getName());
String[] ss = file.getName().split("_"); String[] ss = file.getName().split("_");
...@@ -72,8 +74,9 @@ public class TextHandler extends AbstractFileHandler { ...@@ -72,8 +74,9 @@ public class TextHandler extends AbstractFileHandler {
data.setType("Wifi"); data.setType("Wifi");
// 压缩日志文件并删除 // 压缩日志文件
String zipName = zipLogFile(file); String zipName = ZipUtil.zipFile(file);
log.info("文件是否删除: {}, {}", file.delete(), file.getName());
data.setZipFileUrl(zipName); data.setZipFileUrl(zipName);
data.setFileUrl(file.getParent() + zipName); data.setFileUrl(file.getParent() + zipName);
...@@ -81,7 +84,7 @@ public class TextHandler extends AbstractFileHandler { ...@@ -81,7 +84,7 @@ public class TextHandler extends AbstractFileHandler {
new InsertData().insert(data); new InsertData().insert(data);
} }
private ResultData StringParser(List<String> patternText) { private ResultData stringParser(List<String> patternText) {
String regex = "\\[PASS] (?<itemName>.+?) (?<unit>\\w+), value = \"(?<value>[-\\d.]+)\" (?<range>\\([^)]*\\))"; String regex = "\\[PASS] (?<itemName>.+?) (?<unit>\\w+), value = \"(?<value>[-\\d.]+)\" (?<range>\\([^)]*\\))";
Pattern pattern = Pattern.compile(regex); Pattern pattern = Pattern.compile(regex);
ResultData data = new ResultData(); ResultData data = new ResultData();
...@@ -109,37 +112,4 @@ public class TextHandler extends AbstractFileHandler { ...@@ -109,37 +112,4 @@ public class TextHandler extends AbstractFileHandler {
return data; return data;
} }
private String zipLogFile(File file) {
String zipFile = file.getParent() + File.separator
+ getBaseName(file.getName()) + ".zip";
try (FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos)) {
try (FileInputStream fis = new FileInputStream(file)) {
// 创建 ZipEntry,名字就是压缩包里的文件名
ZipEntry zipEntry = new ZipEntry(file.getName());
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
}
log.info("压缩完成:{}", zipFile);
log.info("文件是否删除: {}, {}", file.delete(), file.getName());
} catch (IOException e) {
log.error(e.getMessage());
}
return zipFile;
}
private String getBaseName(String fileName) {
int dotIndex = fileName.lastIndexOf('.');
return (dotIndex == -1) ? fileName : fileName.substring(0, dotIndex);
}
} }
package util; package util;
import lombok.extern.slf4j.Slf4j;
import java.io.*; import java.io.*;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
@Slf4j
public class ZipUtil { public class ZipUtil {
private ZipUtil() { private ZipUtil() {
} }
...@@ -47,6 +52,35 @@ public class ZipUtil { ...@@ -47,6 +52,35 @@ public class ZipUtil {
return null; return null;
} }
public static String zipFile(File file) {
String zipFile = file.getParent() + File.separator
+ getBaseName(file.getName()) + ".zip";
try (FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos)) {
try (FileInputStream fis = new FileInputStream(file)) {
// 创建 ZipEntry,名字就是压缩包里的文件名
ZipEntry zipEntry = new ZipEntry(file.getName());
zos.setLevel(Deflater.BEST_COMPRESSION);
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
}
log.info("压缩完成:{}", zipFile);
} catch (IOException e) {
log.error(e.getMessage());
}
return zipFile;
}
private static String getBaseName(String fileName) {
int dotIndex = fileName.lastIndexOf('.');
return (dotIndex == -1) ? fileName : fileName.substring(0, dotIndex);
}
} }
...@@ -44,11 +44,16 @@ public class DirWatcher { ...@@ -44,11 +44,16 @@ public class DirWatcher {
for (WatchEvent<?> event : key.pollEvents()) { for (WatchEvent<?> event : key.pollEvents()) {
Path fullPath = dir.resolve((Path) event.context()); Path fullPath = dir.resolve((Path) event.context());
File file = fullPath.toFile(); File file = fullPath.toFile();
if (!fileFilter.test(file)) {
if (fileFilter.test(file) && waitForFileReady(file, 3, 500)) { continue;
log.info("文件已创建: {}", file.getName()); }
Thread.ofVirtual().start(fileHandler.create(file)); if (!waitForFileReady(file, 3, 500)) {
log.error("文件打开失败,已跳过:{}", file.getName());
continue;
} }
log.info("文件已创建: {}", file.getName());
Thread.ofVirtual().start(fileHandler.create(file));
} }
key.reset(); key.reset();
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论