프로젝트 요구 사항
데이터 센터 프로젝트 팀은 파일 및 폴더가 변경될 때 해당 비즈니스 프로세스를 수행하기 위해 폴더 또는 로그 파일을 모니터링하고 해당 형식의 더티 데이터를 읽는 요구 사항을 구현해야 하므로 여기에 기록합니다. 관련사업의 기술선정.
Apache Commons-IO
먼저 해당 종속성을 추가해야 합니다.
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.7</version> </dependency>
버전은 직접 선택할 수 있습니다. 버전 2.7 이상에는 Java 8
공식 웹사이트 스크린샷이 필요합니다.
Apache Commos IO org.apache.commons.io.monitor
패키지는 파일 시스템 모니터링 기능을 제공합니다. org.apache.commons.io.monitor
包提供了文件系统监听的功能。
核心知识
一句话总结:通过观察者模式以及事件监听机制,以
FileAlterationObserver
为核心,再通过FileAlterationListener
,FileAlterationMonitor
,就可以实现对文件系统的事件监听。整体流程:
自定义文件监听类并继承
FileAlterationListenerAdaptor
实现对文件与目录的创建,修改,删除事件的处理自定义文件监控类,通过指定目录创建一个观察者
FileAlterationObserver
向此监视器添加文件系统观察器,并添加文件监听器
通过
ApplicationRunner
或者CommandLineRunner
调用并执行
代码实现
文件监听类:
/** * 文件监听类 * @author Greenarrow * @date 2022-05-12 14:43 **/ public class FileListener extends FileAlterationListenerAdaptor { private static Logger logger = LoggerFactory.getLogger(FileListener.class); @Override public void onStart(FileAlterationObserver observer) { super.onStart(observer); logger.info("onStart"); } @Override public void onDirectoryCreate(File directory) { logger.info("[新建]:" + directory.getAbsolutePath()); } @Override public void onDirectoryChange(File directory) { logger.info("[修改]:" + directory.getAbsolutePath()); } @Override public void onDirectoryDelete(File directory) { logger.info("[删除]:" + directory.getAbsolutePath()); } @Override public void onFileCreate(File file) { String compressedPath = file.getAbsolutePath(); logger.info("[新建]:" + compressedPath); List<String> contentList = null; try { if (file.canRead()){ // 将文件按行读取为字符串集合 contentList = FileUtils.readLines(new File(compressedPath), StandardCharsets.UTF_8); if (CollectionUtil.isNotEmpty(contentList)){ // 获取对应格式的数据并输出,这里可自行添加业务处理 List<String> dirtyRecord = contentList.stream().filter(s -> s.startsWith("{") && s.endsWith("}")).collect(Collectors.toList()); dirtyRecord.forEach(System.out::println); } } } catch (IOException e) { e.printStackTrace(); logger.error("读取文件内容失败",e); } } @Override public void onFileChange(File file) { String compressedPath = file.getAbsolutePath(); logger.info("[修改]:" + compressedPath); } @Override public void onFileDelete(File file) { logger.info("[删除]:" + file.getAbsolutePath()); } @Override public void onStop(FileAlterationObserver observer) { super.onStop(observer); logger.info("onStop"); } }
文件监控类:
/** * 文件监听测试 demo * @author Greenarrow * @date 2022-05-12 14:45 **/ public class FileMonitor { FileAlterationMonitor monitor = null; public FileMonitor(long interval) throws Exception { monitor = new FileAlterationMonitor(interval); } /** * 给文件添加监听 * @param path * @param listener */ public void monitor(String path, FileAlterationListener listener) { FileAlterationObserver observer = new FileAlterationObserver(new File(path)); monitor.addObserver(observer); observer.addListener(listener); } public void stop() throws Exception { monitor.stop(); } public void start() throws Exception { monitor.start(); } }
-
自定义 Runner 并实现
CommandLineRunner
- 🎜한 문장 요약: 관찰자 모드 및 이벤트 수신 메커니즘을 통해
FileAlterationObserver
를 핵심으로 한 다음FileAlterationListener
,FileAlterationMonitor
를 사용하면 파일 시스템의 이벤트 모니터링을 구현할 수 있습니다. 🎜🎜 - 🎜전체 프로세스: 🎜🎜🎜
- 🎜파일 수신 클래스를 사용자 정의하고
FileAlterationListenerAdaptor
를 상속하여 파일 및 디렉터리를 생성하고 처리합니다. 수정 및 삭제 이벤트🎜🎜 - 🎜사용자 정의 파일 모니터링 클래스,
FileAlterationObserver
🎜🎜 - 🎜이 모니터에 파일 시스템 관찰자를 추가하고 파일을 추가하여 관찰자를 생성합니다. 리스너 🎜🎜
- 🎜
ApplicationRunner
또는CommandLineRunner
를 통해 🎜🎜🎜🎜코드 구현을 호출하고 실행합니다. 🎜- 🎜파일 모니터링 클래스: 🎜🎜🎜
/** * 项目启动之后开启文件监听功能 * @author Greenarrow * @date 2022-05-12 10:02 **/ @Component // @Order(Integer.MIN_VALUE) public class DirtyRecordRunner implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(DirtyRecordRunner.class); @Value("${test}") private String path; @Override public void run(String... args) throws Exception { logger.info(this.getClass().getName()+"[开启文件夹监听功能]"); FileMonitor fileMonitor = new FileMonitor(1000); fileMonitor.monitor(path,new FileListener()); fileMonitor.start(); } }
- 🎜파일 모니터링 클래스: 🎜🎜🎜rrreee
- 🎜Customize
CommandLineRunner
실행 및 구현:🎜🎜🎜rrreee
- 🎜파일 모니터링 클래스: 🎜🎜🎜rrreee
- 🎜파일 모니터링 클래스: 🎜🎜🎜
- 🎜파일 수신 클래스를 사용자 정의하고
위 내용은 Java에서 로그 파일 모니터링을 구현하고 관련 데이터를 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

드림위버 CS6
시각적 웹 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
