【发布时间】:2012-05-30 20:48:45
【问题描述】:
在java中可以知道文件的元数据吗?如果是,如何在java中获取文件的元数据?
【问题讨论】:
-
我认为这是平台相关的。我是否正确地说您是在文件系统“附加”到文件的数据之后?
-
如果这就是我要找的。span>
在java中可以知道文件的元数据吗?如果是,如何在java中获取文件的元数据?
【问题讨论】:
您可以从文件中获取一组基本元数据。
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());
有些事情是平台相关的,可能会抛出异常或返回意外结果。
您可以在Managing Metadata (File and File Store Attributes)阅读更多内容。
【讨论】:
FITS 是一个命令行应用程序,它捆绑了许多可以识别和表征文件(提取元数据)的工具。它也有一个java API
还有许多可以执行类似任务的识别和表征工具。 Apache Tika、Pronom Droid、Jhove 等。
【讨论】:
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")));
}
}
【讨论】:
我认为使用以下这个项目很容易从任何文件中获取信息。
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");
}
}
}
【讨论】:
在 Java 7 中,您拥有 nio2 包,新的 Path.class 可以满足您的所有需求
【讨论】: