Est-il possible de connaître les métadonnées d'un fichier en java? et si c'est le cas, comment obtenir les métadonnées d'un fichier en java?
Il existe un ensemble de métadonnées de base que vous pouvez obtenir à partir d'un fichier.
Path file = ...;
BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);
System.out.println("creationTime: " + attr.creationTime());
System.out.println("lastAccessTime: " + attr.lastAccessTime());
System.out.println("lastModifiedTime: " + attr.lastModifiedTime());
System.out.println("isDirectory: " + attr.isDirectory());
System.out.println("isOther: " + attr.isOther());
System.out.println("isRegularFile: " + attr.isRegularFile());
System.out.println("isSymbolicLink: " + attr.isSymbolicLink());
System.out.println("size: " + attr.size());
Certaines choses dépendent de la plate-forme et peuvent lever des exceptions ou renvoyer des résultats inattendus.
Vous pouvez en savoir plus sur Gestion des métadonnées (attributs de fichier et de magasin de fichiers) .
FITS est une application en ligne de commande qui regroupe de nombreux outils qui peuvent identifier et caractériser des fichiers (extraire des métadonnées). Il a également une API Java
Il existe également de nombreux outils d'identification et de caractérisation qui peuvent effectuer des tâches similaires. Apache Tika, Pronom Droid, Jhove, etc.
package demo.test;
import Java.io.File;
import Java.io.IOException;
import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.Paths;
import Java.nio.file.attribute.BasicFileAttributeView;
import Java.nio.file.attribute.BasicFileAttributes;
import Java.nio.file.attribute.FileTime;
import Java.text.SimpleDateFormat;
public class FileCreationTime {
public String getCreationDetails(File file)
{
try{
Path p = Paths.get(file.getAbsolutePath());
BasicFileAttributes view
= Files.getFileAttributeView(p, BasicFileAttributeView.class)
.readAttributes();
FileTime fileTime=view.creationTime();
return (""+new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format((fileTime.toMillis())));
}
catch(IOException e){
e.printStackTrace();
}
return "";
}
public static void main(String...str){
System.out.println
(new FileCreationTime().getCreationDetails(new File("D:/connect.png")));
}
}
Je pense qu'il est facile d'utiliser ce projet suivant pour obtenir des informations à partir de n'importe quel fichier.
import Java.io.File;
public class FileInfo{
public static void main (String []args){
File f = new File("file100.txt");
if(f.exists()){
System.out.println("Name: "+ f.getName());
System.out.println("Path: "+ f.getAbsolutePath());
System.out.println("Size: "+ f.length());
System.out.println("Writeable: "+ f.canWrite());
System.out.println("Readable: "+ f.canRead());
}else{
System.out.println("The File does not exist");
}
}
}