Como pegar o tamanho do arquivo em disco?

Pessoal, estou desenvolvendo uma aplicação, para a empresa onde trabalho, que realiza transferências de arquivos que chegam em determinados diretórios por FTP automaticamente para outros diretórios na rede segmentada. O problema é que chegam arquivos grandes em horários indeterminados, durante o dia inteiro, e não posso mover os mesmos se o download de cada um não tiver terminado, para não corromper dos dados.

Como faço, existe alguma forma para pegar o tamanho do arquivo em disco? Não é o tamanho do arquivo, tipo:

new File(“texto.txt”).length();

pois quando executo este comando, o tamanho total do arquivo me é retornado, mesmo o download não terminado.

Tentei monitorar os eventos dos diretórios, mas só consigo pegar o ENTRY_MODIFY quando o download inicia e termina.

Desde já, agradeço a ajuda.

Mas você precisa saber o tamanho do arquivo ou saber se você pode retirar ele do Ftp?

por que e mais fácil você verificar se o arquivo esta em uso… ou seja, travado pelo cliente que esta enviando o arquivo para o ftp…

neste caso você pode fazer isso.


File f = new File(Constantes.ARQUIVO_BLOQUEIO);  
        FileLock lock = null;  
  
        f.createNewFile();  
        lock = new RandomAccessFile(f, "rw").getChannel().tryLock();  
  
        boolean bloquueado = (lock == null);

Certo, vou tentar fazer isso.

Obrigado!