¿Hay una manera de generar la versión 8.3 o 'corto' (Windows) de un nombre de archivo en Java?

StackOverflow https://stackoverflow.com/questions/972559

  •  13-09-2019
  •  | 
  •  

Pregunta

En nuestra aplicación, estamos permitiendo a los usuarios abrir archivos y directorios.

Java 6 nos proporciona ...

java.awt.Desktop.getDesktop().open(file);

, que funciona muy bien. Sin embargo, ya que necesitamos para asegurar la compatibilidad de Java 5, también implementamos un método de abrir archivos usando el comando start en cmd.exe ...

String command = "cmd.exe start ...";
Runtime.getRuntime().exec(command);

Aquí es donde el problema se presenta. Parece que el comando start sólo puede manejar 8.3 nombres de archivo, lo que significa que cualquier no- corto (8.3) archivo / nombres de directorio causar el comando start falle.

¿Hay una manera fácil de generar estos nombres cortos? O cualquier otro soluciones?

¿Fue útil?

Solución

Trate algo como esto

import java.io.IOException;

class StartExcel {
    public static void main(String args[])
        throws IOException
    {
        String fileName = "c:\\temp\\xls\\test2.xls";
        String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",fileName};
        Runtime.getRuntime().exec(commands);
    }
}

Es importante pasar un título ficticio para el comando de inicio de Windows, donde existe la posibilidad de que el nombre de archivo contiene un espacio. Es una característica.

Otros consejos

O usted podría intentar:

Runtime.getRuntime().exec(
  new String[] { System.getenv("windir") + "\\system32\\rundll32.exe",
    "shell32.dll,ShellExec_RunDLL", "http://www.stackoverflow.com" });

Fuente: http://www.rgagnon.com/javadetails/java-0014 .html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top