How to launch a file protocol URL with an anchor from Java?

拟墨画扇 提交于 2019-11-30 18:13:20

I just solved this another way, because no amount of quoting or spaces in any of these examples worked for me.

1 Detect if the file URI has a anchor or query string

2 If so, create a temp file File tmpfile = File.createTempFile("apphelp", ".html") with a meta-redirect to the actual file URI I desire:

<html><head>
<meta http-equiv="refresh" content="0;url=help.html#set_filter" />
</head></html>

3 Execute the local rundll command using new temporary URI:

Runtime.getRuntime().exec(
  "rundll32 url.dll,FileProtocolHandler \"" 
  +tmpfile.toURI().toString()+ "\"");

I hope this works for you!

Solution on Windows is:

rundll32 URL.dll, FileProtocolHandler "file:///x:/temp/fragtest.htm#frag"

Mind the quotes!!!

rundll32 URL.dll, FileProtocolHandler file:///x:/temp/fragtest.htm#frag does work as expected.

For Windows only, you could try

System.exec("cmd.exe start file:///C:/foo/bar.html#anchor")

You could try using BrowserLauncher2. It's a small and self-contained cross-platform library to open the default browser. It handles anchors perfectly.

Adam Rofer

I've done some investigation on this item here - note that opening cmd and typing start file:///c:/temp/test.html#anchor also doesn't work.

I think the only thing that actually works is to call a browser manually (or use a third-party tool that does this).

On Windows, you always have Internet Explorer, so you could call Runtime.getRuntime().exec("cmd.exe start iexplore " + myURL) if you really don't want to find iexplore.exe yourself - but this doesn't always work either.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!