Я запускаю программу для отображения информации о всех файлах, хранящихся в папке.Acces denied - получить свойства файла?
Я хочу получить свойства файла (самый важный для меня размер файла, но я хотел бы получить и другие свойства, такие как дата модификации и т. Д.).
Моя проблема в том, что когда я добираюсь до файла, который фактически используется другой программой, я не могу получить BasicFileAtrributtes
файла. Я пытался использовать File
, URL
, RandomFileAcces
, но все эти requiese, чтобы открыть файл, и бросить исключение, как:
java.io.FileNotFoundException: C:\pagefile.sys (Access is denied)
Есть ли вариант в Java, чтобы получить эти свойства? Я предпочитаю не использовать какие-либо дополнительные библиотеки, чтобы сохранить небольшой размер приложения.
Приложение основано на java JRE7.
Я использую java.nio.file.SimpleFileVisitor
для просмотра всех файлов. Вот фрагмент моего кода, где я получил ошибку:
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc){
FileInfo temp=new FileInfo(new FileInfo().repairName(file.toString()));
temp.isLeaf=true;
temp.fName=temp.fName.replace(strIn, "");
File fis=null;
try {
fis=new File(file.toAbsolutePath().toString());
if(fis.exists())
System.out.println("exists");
if(fis.isFile())
System.out.println("isFile");
System.out.println(file.toAbsolutePath().toString());
temp.fSize=new BigInteger(new Long(fis.length()).toString());
} catch(Exception e){
e.printStackTrace();
}
node.add(temp, true);
FileListCreator.jProgressBar.setValue(++count);
return CONTINUE;
}
Можете ли вы показать код, который вы используете? Возможно, вы случайно пытаетесь писать только для чтения файлов. – Jivings
Попробуйте вызвать 'fis.exists();' и 'fis.isFile();' после 'fis' инициализации. Оба они возвращаются «верно»? – MockerTim
@MockerTim: нет, они оба возвращают false. У меня нет проблем с другими файлами, защищенными системой (например, ntldr), но этот не может быть разрешен для обычного файла. Я могу видеть размер и свойства файла через Total Commander. – filipbe