Первая публикация, но вот она. Я пытаюсь создать программу, которая читает все файлы на диске и имеет sh этих файлов, чтобы обнаружить потенциальные различия в «поврежденном диске». Программа отлично работает для всех целей, кроме случаев, когда встречаются файлы со специальными разрешениями. Я потратил дни, пытаясь решить эту проблему, и прочитал много сообщений в стеке, но ни один из найденных мной не охватывал мою конкретную проблему c. Я попытался предоставить разрешение с помощью набора для чтения и записи, но ничего не сделал. вызов оказался безрезультатным.
Следующий метод вызывает у меня затруднения.
private static String hash(File f, String name) throws NoSuchAlgorithmException, IOException {
if(f.isDirectory() == true) {
return "";
}
InputStream is = Files.newInputStream(Paths.get(f.getAbsolutePath()));
output = DigestUtils.sha256Hex(is);
output = DigestUtils.sha256Hex(name + output);
return output;
}
пример вывода + трассировка стека:
F:\
F:\$Recycle.Bin
F:\$Recycle.Bin\S-1-5-18
F:\$Recycle.Bin\S-1-5-18\desktop.ini
F:\$Recycle.Bin\S-1-5-21-3562049501-1359381880-3951677873-1001
F:\$Recycle.Bin\S-1-5-21-3562049501-1359381880-3951677873-1001\desktop.ini
F:\$Recycle.Bin\S-1-5-21-4029137503-3596887599-1249178651-1001
F:\$Recycle.Bin\S-1-5-21-4029137503-3596887599-1249178651-1001\desktop.ini
F:\Documents and Settings
Issue exploring folder:
java.nio.file.AccessDeniedException: F:\hiberfil.sys
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.spi.FileSystemProvider.newInputStream(Unknown Source)
at java.nio.file.Files.newInputStream(Unknown Source)
at Core.Main.hash(Main.java:47)
at Core.Main.construct(Main.java:91)
at Core.Main.run_construct(Main.java:129)
at Core.Display$SwingAction.actionPerformed(Display.java:297)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)