如何防止ShellFolder.getFolderColumns(...)崩溃

时间:2010-11-25 21:22:00

标签: java file-io file

我在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也使用了这种方法,但我似乎无法从这些类型的崩溃中找到它的预防/保护。

1 个答案:

答案 0 :(得分:0)

getFolderColumns方法仅适用于文件夹。因此,缓存列信息(因此您知道列位置),您仍然可以从文件中获取所需的列数据。我没有看到文件夹上的列与文件不同的情况。

哦,请注意,这种方法只适用于Windows。