2015-06-19 63 views
0

对于我正在处理的项目,我需要找到iNode/FileID。它是操作系统中单个文件的唯一标识符,因此即使它们被重命名或移动,我也可以跟踪它们。在Java中是否存在与BasicFileAttributes等效的外部库?具体的方法fileKey?

建议我使用BasicFileAttributes :: fileKey来找到它,它应该完美工作。我的问题是我需要用Java 6来开发这个功能,BasicFileAttributes需要Java 7.

不幸的是,它不是一个使用Java 7的选项,所以任何人都不会对可以提供相同功能的外部库有任何建议?

有人还提到,我可以做一些脚本用命令提示符(我使用Windows 7),试图找到它。

感谢您的任何帮助/建议。

+0

我知道你说过你需要使用java6,但是你应该指出那些阻止你的人,那就是java 6和7已经通过了生命的结束,并且需要被逐渐淘汰,转而支持java 8. – redge

+0

I不能同意更多。我希望我有能力改变这种情况,但最终只是不是我的电话,他们现在不想更新。 – justinlav

回答

1

这是我想出了实现:

public static class FileKey { 
    private File file; 
    public FileKey(File file) { 
     this.file=file; 
    } 

    @Override 
    public int hashCode() { 
     long res = file.length(); 
     res+=file.lastModified(); 
     if(file.isHidden()) 
      res+=2; 
     if(file.isDirectory()) { 
      res+=3; 
     } 
     return (int) res; 
    } 

    @Override 
    public boolean equals(Object dst) { 
     if(dst instanceof FileKey) { 
      int dstHashCode = ((FileKey) dst).hashCode(); 
      return dstHashCode == this.hashCode(); 
     } 
     return false; 
    } 
} 

只需使用作为FileKey的对象。

相关问题