Jak sprawdzić, czy plik jest „kompletny” (w całości napisany) w Javie

Powiedzmy, że miałeś zewnętrzny proces zapisujący pliki do jakiegoś katalogu i miałeś osobny proces okresowo próbujący odczytać pliki z tego katalogu. Problemem, którego należy unikać, jest czytanie pliku, który drugi proces jest obecnie w trakcie pisania, więc byłby niekompletny. Obecnie proces, który odczytuje, używa minimalnego sprawdzenia licznika czasu pliku, dlatego ignoruje wszystkie pliki, chyba że ich ostatnia modyfikacja ma więcej niż XX sekund.

Zastanawiam się, czy istnieje lepszy sposób na rozwiązanie tego problemu. Jeśli typ pliku jest nieznany (może to być wiele różnych formatów), czy jest jakiś niezawodny sposób sprawdzenia nagłówka pliku pod kątem liczby bajtów, które powinny znajdować się w pliku, w porównaniu z liczbą bajtów aktualnie w pliku, aby potwierdzić ich zgodność?

Dziękujemy za wszelkie przemyślenia lub pomysły!

questionAnswers(8)

yourAnswerToTheQuestion