【问题标题】:Get the metadata of a file获取文件的元数据
【发布时间】:2012-05-30 20:48:45
【问题描述】:

在java中可以知道文件的元数据吗?如果是,如何在java中获取文件的元数据?

【问题讨论】:

  • 我认为这是平台相关的。我是否正确地说您是在文件系统“附加”到文件的数据之后?
  • 如果这就是我要找的。​​span>

标签: java metadata


【解决方案1】:

您可以从文件中获取一组基本元数据。

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)阅读更多内容。

【讨论】:

    【解决方案2】:

    FITS 是一个命令行应用程序,它捆绑了许多可以识别和表征文件(提取元数据)的工具。它也有一个java API

    还有许多可以执行类似任务的识别和表征工具。 Apache Tika、Pronom Droid、Jhove 等。

    【讨论】:

      【解决方案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")));
         }
      }
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          在 Java 7 中,您拥有 nio2 包,新的 Path.class 可以满足您的所有需求

          【讨论】:

          • 你应该看到How to Answer关于答案中的链接。我没有投反对票,因为这个链接最有可能持续存在(但甲骨文仍然可以移动它们......)。您应该在答案中添加示例或至少提供一些方法。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多