获取文件的元数据

21

在Java中可以获取文件的元数据吗?如果可以,如何获取文件的元数据?


我认为这取决于平台。我的理解是你想获取文件系统“附加”到文件上的数据,对吗? - user377628
1
如果那就是我正在寻找的。 - josemm1790
5个回答

42

你可以从文件中获取基本元数据。

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());

有些东西是与平台相关的,可能会抛出异常或返回意外的结果。

您可以阅读更多信息,请访问管理元数据(文件和文件存储属性)


6

3

从Java程序获取文件元数据

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")));
   }
}

0

我认为使用以下项目从任何文件中获取信息很容易。

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");
        }
    }
}

-1

使用Java 7,您可以使用nio2包,其中新的Path.class提供了您所需的一切。


你应该在回答中看到有关链接的[答案]。我没有投反对票,因为这些链接很可能会保留(但Oracle仍然可能会移动它们...)。你应该在你的答案中添加示例或至少提供一些方法。 - AxelH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接