txt texto separado por modificar manejo leer guardar ejemplos descargar crear como comas codigo archivos archivo java file uri anchor file-uri

texto - ¿Cómo iniciar un URL de protocolo de archivo con un ancla de Java?



manejo de archivos en java netbeans ejemplos (5)

Desde un programa Java, necesito iniciar el navegador predeterminado en un archivo HTML local, señalando un ancla dentro del archivo. En Java SE 6, el método java.awt.Desktop.browse abrirá el archivo, pero no respetará el delimitador, por lo que algo como lo siguiente abre el archivo en la parte superior, pero no ubica el navegador en el ancla:

Desktop.getDesktop("file:///C:/foo/bar.html#anchor");

Sun dice aquí http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6477862 que los anclajes no son compatibles con el protocolo URI de archivo.

¿Alguien tiene una mejor respuesta?

Puedo usar Java SE 6. Estaría bien con una solución de Windows solamente.


Solo para Windows, podrías probar

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


Podría intentar usar BrowserLauncher2 . Es una biblioteca multiplataforma pequeña e independiente para abrir el navegador predeterminado. Maneja perfectamente los anclajes.


La solución en Windows es:

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

¡Cuidado con las citas!

rundll32 URL.dll, archivo FileProtocolHandler: /// x: /temp/fragtest.htm#frag funciona como se esperaba.


Acabo de resolver esto de otra manera, porque ninguna cantidad de citas o espacios en ninguno de estos ejemplos funcionó para mí.

1 Detecta si el archivo URI tiene una cadena de anclaje o consulta

2 De ser así, cree un archivo temporal File tmpfile = File.createTempFile("apphelp", ".html") con un meta-redireccionamiento al URI del archivo real que deseo:

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

3 Ejecute el comando local rundll usando el nuevo URI temporal:

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

¡Espero que esto funcione para ti!


He realizado una investigación sobre este elemento aquí : tenga en cuenta que abrir el start file:///c:/temp/test.html#anchor cmd y tipear start file:///c:/temp/test.html#anchor tampoco funciona.

Creo que lo único que realmente funciona es llamar manualmente un navegador (o usar una herramienta de terceros que hace esto).

En Windows, siempre tiene Internet Explorer, por lo que puede llamar a Runtime.getRuntime().exec("cmd.exe start iexplore " + myURL) si realmente no desea encontrar iexplore.exe usted mismo, pero esto no significa siempre funciona bien.