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.
[code language=”bash”]> 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: -[/code]
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:
[code language=”java”] Path path = Paths.get(filePath);
Map f = Files.readAttributes(path, "unix:*");
System.out.println(f);[/code]
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:
[code language=”java”] System.out.println(Files.getAttribute(path,"unix:ctime"));
[/code]
Para mais informações de como trabalhar com atributos, pode-se encontrar aqui.