2015-06-19 2 views
0

Для проекта, над которым я работаю, мне нужно найти iNode/FileID. Это уникальный идентификатор для отдельных файлов в операционной системе, чтобы я мог отслеживать их, даже если они были переименованы или перемещены.Есть ли внешняя библиотека, эквивалентная BasicFileAttributes в Java? В частности, метод 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.

Смежные вопросы