我在Java中使用秘密隐藏的ShellFolder类。它有一个很好的方法叫做getFolderColumns,它可以让你访问一些关于文件的好数据。
问题是很多文件都崩溃了:
线程中的异常 “池1线程2445” java.lang.InternalError:无法执行 绑定C:\ Windows \ System32 \ zonedon.reg 父母在 sun.awt.shell.Win32ShellFolder2 $ 4.call(Win32ShellFolder2.java:400) 在 sun.awt.shell.Win32ShellFolder2 $ 4.call(Win32ShellFolder2.java:385) 在 sun.awt.shell.Win32ShellFolderManager2 $ ComInvoker.invoke(Win32ShellFolderManager2.java:523) 在 sun.awt.shell.ShellFolder.invoke(ShellFolder.java:399) 在 sun.awt.shell.ShellFolder.invoke(ShellFolder.java:385) 在 sun.awt.shell.Win32ShellFolder2.getIShellFolder(Win32ShellFolder2.java:384) 在 sun.awt.shell.Win32ShellFolder2 $ 17.call(Win32ShellFolder2.java:1068) 在 sun.awt.shell.Win32ShellFolder2 $ 17.call(Win32ShellFolder2.java:1066) 在 java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908) 在 sun.awt.shell.Win32ShellFolderManager2 $ ComInvoker $ 3.run(Win32ShellFolderManager2.java:492) 在 java.lang.Thread.run(Thread.java:619)
你也无法捕获它并恢复,因为它会抛出UncaughtException。 我注意到JFileChooser也使用了这种方法,但我似乎无法从这些类型的崩溃中找到它的预防/保护。
答案 0 :(得分:0)
getFolderColumns方法仅适用于文件夹。因此,缓存列信息(因此您知道列位置),您仍然可以从文件中获取所需的列数据。我没有看到文件夹上的列与文件不同的情况。
哦,请注意,这种方法只适用于Windows。