Como testar se um arquivo está “completo” (completamente escrito) com Java

Digamos que você tenha um processo externo gravando arquivos em algum diretório e tenha um processo separado tentando ler periodicamente os arquivos desse diretório. O problema a evitar é a leitura de um arquivo que o outro processo está atualmente no meio da escrita, então seria incompleto. Atualmente, o processo que lê usa uma verificação mínima do cronômetro de idade do arquivo, portanto, ele ignora todos os arquivos, a menos que a data da última modificação tenha mais de XX segundos.

Eu estou querendo saber se existe uma maneira mais clara de resolver este problema. Se o tipo de arquivo for desconhecido (pode haver vários formatos diferentes), há alguma maneira confiável de verificar o cabeçalho do arquivo quanto ao número de bytes que devem estar no arquivo, em comparação com o número de bytes atualmente no arquivo para confirmar se eles correspondem?

Obrigado por quaisquer pensamentos ou idéias!