Tôi đang xem thư mục cho tệp đến (sử dụng FileAlterationObserver từ dấu phẩy apache).Tránh phát hiện tệp không đầy đủ khi xem thư mục để thay đổi trong java
class Example implements FileAlterationListener {
public void prepare() {
File directory = new File("/tmp/incoming");
FileAlterationObserver observer = new FileAlterationObserver(directory);
observer.addListener(this);
FileAlterationMonitor monitor = new FileAlterationMonitor(10);
monitor.addObserver(observer);
monitor.start();
// ...
}
public void handleFile(File f) {
// FIXME: this should be called when the writes that
// created the file have completed, not before
}
public void onFileCreate(File f) {
handleFile(f);
}
public void onFileChange(File f) {
handleFile(f);
}
}
Các tệp được viết bằng các quy trình mà tôi không kiểm soát.
Sự cố tôi gặp phải với mã đó là cuộc gọi lại của tôi được kích hoạt khi Tệp được tạo ban đầu. Tôi cần nó để kích hoạt khi tập tin đã được thay đổi và ghi vào tập tin đã hoàn thành. (có thể bằng cách phát hiện khi tệp dừng lại thay đổi)
Cách tốt nhất để làm điều đó là gì?
IOW bạn muốn biết khi nào quá trình ghi đóng tệp? – finnw
Tôi nghĩ rằng về cơ bản tôi cần triển khai [debounce] (http://documentcloud.github.com/underscore/docs/underscore.html#section-52) để Java – levinalex
đóng lại tệp: Có, nếu tác vụ đó có thể giải quyết nó. (Có cách nào để lấy thông tin đó mà không có bất kỳ sự kiểm soát nào đối với người viết không?) Tôi có thể thử lấy một khóa độc quyền trên tập tin không? Điều đó có hoạt động trên các nền tảng không? – levinalex