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.