Como recuperar a data e hora que um arquivo foi movido

Sistemas baseados em Unix possuem alguns atributos que não estão disponíveis de forma intuitiva na linguagem Java, nem há documentação a respeito. Entretanto, em algumas situações se faz necessária a utilização dessa informação. Por exemplo, quando movemos um arquivo de local, o único atributo que possui a data de alteração é o "change time" que pode ser consultado pelo comando stat.

> stat 412412312.txt 
  File: 412412312.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d	Inode: 17563908    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  thiago)   Gid: ( 1000/  thiago)
Access: 2018-09-14 14:57:44.899000835 -0300
Modify: 2018-09-14 14:57:44.899000835 -0300
Change: 2018-09-14 14:58:39.583004882 -0300
 Birth: -

Com isso sabemos que esses atributos estão disponíveis no arquivo. Para recuperar todos esses atributos do contexto Unix, no Java, pode-se utilizar o seguinte comando:

	        Path path = Paths.get(filePath);
	        Map f  = Files.readAttributes(path, "unix:*");
	        System.out.println(f);

Onde filePath é o caminho onde está o arquivo/diretório. Ou, se deseja recuperar apenas um atributo, como o Change Time (ctime), pode-se realizar da seguinte forma:

			System.out.println(Files.getAttribute(path,"unix:ctime"));

Para mais informações de como trabalhar com atributos, pode-se encontrar aqui.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6