java - 如何从 Java 启动带有 anchor 的文件协议(protocol) URL?

标签 java file uri anchor file-uri

在 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/

相关文章:

java - 使用 java.time 进行 hibernate

AndroidManifest.xml

iphone - iOS开发: Saved file does not show up in itunes

java - 长按时执行操作

java - 如何在 JPanel 上绘制网格线作为背景

java - 在java中的正则表达式中使用点进行分割

c - 使用 fwrite() 将结构写入文件

c# - Type.GetType 不工作

http - 如何在 anchor 中指定协议(protocol)并仍然使用相对路径?

url - Kohana 3 - 我应该如何处理 View 中的 url