【问题标题】:How to prevent ShellFolder.getFolderColumns(...) from crashing a lot如何防止 ShellFolder.getFolderColumns(...) 大量崩溃
【发布时间】:2011-05-15 22:05:30
【问题描述】:

我在 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 也使用此方法,但我似乎无法找到它对此类崩溃的预防/保护。

【问题讨论】:

    标签: java file-io file


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2021-04-19
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多