2009-07-08 14 views
25

Tôi đang tìm thư viện Java có thể thông báo cho tôi về những thay đổi trên hệ thống tệp.Có một màn hình hệ thống tập tin tinh vi cho Java là phần mềm miễn phí hay nguồn mở không?

Tôi tìm thấy một số thư viện miễn phí, nhưng tất cả đều sử dụng tính năng phát hiện bạo lực, tức là bỏ phiếu trong khoảng thời gian đều đặn. Và những cái khác luôn mang tính thương mại.

Điều tôi đang tìm là thư viện sử dụng chức năng giám sát tệp từ HĐH, tức là FindFirstChangeNotification cho Win32, FAM cho Linux và mọi thứ có sẵn trên hệ điều hành khác. Tôi không quan tâm nếu brute-force được sử dụng như dự phòng, nhưng đối với Windows và Linux nó nên sử dụng các tính năng hệ điều hành có sẵn.

+2

Câu hỏi này có vẻ ngoài chủ đề vì đây là trang web lập trình. Xem [Tôi có thể hỏi những chủ đề gì ở đây] (http://stackoverflow.com/help/on-topic) trong Trung tâm trợ giúp. Có lẽ [Software Exchange Stackation] (https://softwarerecs.stackexchange.com/) sẽ là một nơi tốt hơn để hỏi. – jww

+0

Java 7 đã giới thiệu [WatchService] (https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html). –

Trả lời

25

JNotify dường như làm những gì bạn yêu cầu.

Bỏ phiếu cho hệ thống tệp (ví dụ: thư mục thay đổi thời gian cập nhật) sẽ không áp đặt tải trọng đáng kể trên hệ thống của bạn và không được giảm giá. Các ứng dụng như Tomcat, v.v. sử dụng tính năng này để quản lý các triển khai nóng với một vài sự cố.

Hiện không có nhiều trợ giúp, nhưng Java 7 sắp tới có chính xác số này WatchService.

4

Tại sao nó phải là Java?

Thư viện sắp sử dụng API nền tảng cụ thể phải có mã gốc, vì vậy về cơ bản thư viện sẽ là trình bao bọc xung quanh mã gốc làm cho việc sử dụng các API khác nhau trong suốt.

Tôi đề nghị nếu bạn không tìm thấy Thư viện tự của bạn thì bạn sẽ phải sử dụng sức mạnh vũ phu khi bạn gọi nó hoặc gọi API gốc bằng JNI cho mỗi nền tảng.

+0

Có, đó là cơ bản những gì như một thư viện sẽ được, một wrapper. Nhưng tôi đã hy vọng rằng một cái gì đó như thế đã tồn tại. (Nó tồn tại, nhưng không phải là mã nguồn mở/miễn phí) –

7

Nếu bạn cảm thấy thoải mái khi làm việc trên cạnh chảy máu của Java, hãy xem JSR 203: More New I/O APIs aka nio2 sắp hết hạn trong Java 7.

API

Một giao diện hệ thống tập tin mới mà hỗ trợ truy cập với số lượng lớn để nộp thuộc tính, thông báo thay đổi, thoát cho hệ thống tập tin cụ thể, và một giao diện cung cấp dịch vụ cho triển khai hệ thống tập tin pluggable;

6

jpathwatch là một tùy chọn khác. Nó thực hiện API của Java 7 để giám sát thư mục, do đó rất dễ dàng chuyển sang Java 7 nếu muốn.

0

Thêm hai tùy chọn mà hiện sử dụng phiếu:

Tuy nhiên, do cả hai dự án có cộng đồng tích cực lớn, họ có thể sẽ được cập nhật trong tương lai để hỗ trợ Java 7 WatchService (FileSystem.newWatchService()), trong đó không sử dụng platfor cơ bản cơ sở thông báo của m, nếu có.

Cả hai thư viện cũng cung cấp lớp trừu tượng hữu ích để tích hợp với nhiều hệ thống và phương tiện khác để mã ứng dụng chính của bạn không phụ thuộc vào đầu vào được nhận từ hệ thống tệp.

+1

Một bình luận giải thích downvote sẽ hữu ích ... – Raman

Các vấn đề liên quan