sexta-feira, 30 de dezembro de 2011

Comparar datas de arquivos


Muitas vezes quando desejamos efetuar operações sobre arquivos, como por exemplo, copiar um arquivo de um diretório para outro, queremos ter certeza que não estamos sobrescrevendo o novo pelo antigo. Para saber isto temos que comparar as datas do arquivo de origem com o destino.

Vamos ver uma classe que faz esta comparação.


import java.util.*;
import java.io.File;


/**
* compara a data de dois arquivos
* @param arg[0] arquivo de origem
* @param arg[1] arquivo de destino
*/
public class ComparaDatasArquivos {
  public static void main(String[] args) { 
    if (args.length < 2) {
      System.out.println("Uso: java ComparaDatasArquivos arquivo1 arquivo2");
      System.exit(0);
    }


    // pega os dois arquivos
    File f1 = new File(args[0]); 
    File f2 = new File(args[1]); 


    if (!(f1.exists() && f2.exists())) {
      System.out.println("Arquivo inexistente! Operação cancelada");
      System.exit(0);
    }


    // pega as datas dos arquivos
    long d1 = f1.lastModified();
    long d2 = f2.lastModified(); 
    String situacao;
    if (d1 == d2)
      situacao = "tem mesma data que";
    else if (d1 < d2)
      situacao = "eh mais antigo que";
    else
      situacao = "eh mais novo que";
    System.out.println(f1.getName() + " " + situacao + " " + f2.getName());
  }
}


Compilem e rodem

PS: Notem a construção do if .. else if .. else do final da classe. Quando se tem um comando, não é necessário criar um bloco com { }

Nenhum comentário:

Postar um comentário