在 Java 程序中,我需要在本地 HTML 文件上启动默认浏览器,指向文件内的 anchor 。在 Java SE 6 中,java.awt.Desktop.browse 方法将打开文件,但不会支持 anchor ,因此类似下面的内容会在顶部打开文件,但不会将浏览器分页到 anchor :
Desktop.getDesktop("file:///C:/foo/bar.html#anchor");
Sun 在这里说 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6477862文件 URI 协议(protocol)不支持 anchor 。
有没有人有更好的答案?
我可以使用 Java SE 6。我可以使用仅限 Windows 的解决方案。
最佳答案
我只是用另一种方式解决了这个问题,因为这些示例中的任何引号或空格都不适合我。
1 检测文件 URI 是否有 anchor 或查询字符串
2 如果是这样,创建一个临时文件 File tmpfile = File.createTempFile("apphelp", ".html")
并使用元重定向到我想要的实际文件 URI:
<html><head>
<meta http-equiv="refresh" content="0;url=help.html#set_filter" />
</head></html>
3 使用新的临时 URI 执行本地 rundll 命令:
Runtime.getRuntime().exec(
"rundll32 url.dll,FileProtocolHandler \""
+tmpfile.toURI().toString()+ "\"");
我希望这对你有用!
关于java - 如何从 Java 启动带有 anchor 的文件协议(protocol) URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300509/