(Ho un problema che ho illustrato nella domanda this ma non ho avuto risposte corrette. Ho perfezionato il mio problema e ho provato a modificare la domanda iniziale per riflettere, ma suppongo per il modo in cui SO visualizza domande senza risposta ha perso slancio e c'è non c'è modo di farla rivivere. Quindi sto postando di nuovo la mia domanda corretta).Non è possibile avviare un file su una rete utilizzando Java Desktop?
Ho un file che risiede su un percorso di rete condivisa:
"\\KUROSAVVAS-PC\Users\kuroSAVVAS\Desktop\New Folder\Warsaw Panorama.JPG"
(Gli spazi ci sono volutamente)
Il seguente codice:
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
try {
String s = "\\\\KUROSAVVAS-PC\\Users\\kuroSAVVAS\\Desktop\\New Folder\\Warsaw Panorama.jpg";
File f = new File(s);
System.out.println(f.exists());
Desktop.getDesktop().open(f);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Stampe a la console che il file esiste (System.out.println (f.exists());) ma lancia questa eccezione! :
java.io.IOException: Failed to open file:////KUROSAVVAS-PC/Users/kuroSAVVAS/Desktop/New%20%20%20%20%20Folder/Warsaw%20%20%20%20Panorama.jpg. Error message: The system cannot find the file specified.
at sun.awt.windows.WDesktopPeer.ShellExecute(WDesktopPeer.java:59)
at sun.awt.windows.WDesktopPeer.open(WDesktopPeer.java:36)
at java.awt.Desktop.open(Desktop.java:254)
at Test.main(Test.java:13)
Qualcuno ha qualche idea del perché una cosa del genere può accadere? Ho provato di tutto, dalla creazione di URI alla decodifica in seguito ... Niente funziona.
e fa il percorso stesso file (vale a dire con spazi) funziona quando il file è locale sul tuo computer (ad esempio su C :)? Il problema è correlato al file system di rete? –
Se si incolla "\\\\ KUROSAVVAS-PC \\ Users \\ kuroSAVVAS \\ Desktop \\ Nuova cartella \ Warsaw Panorama.jpg" nella finestra di dialogo "Esegui" il file si apre normalmente. In questo esempio la condivisione risiede anche sul mio disco locale, ma in generale dovrebbe funzionare con qualsiasi percorso di rete. –
(gli spazi sono stati automaticamente rimossi sul mio commento precedente, sono lì ...) Volevo anche dire che sono autenticato contro la condivisione –