Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Aprire un file di windows

    Ho un programma java che mi permette di selezionare un file di testo salvato sul pc
    Vorrei sapere come fare per far aprire il file di testo selezionato al programma che di default si occupa di aprire i file di testo (tipicamente microsoft word oppure openoffice)

    Mi spiego meglio
    seleziono un file da un programma java (swing)
    premo un bottone del programma java (un jbutton)
    si deve aprire il file con l'editor di testo installato nel S.O. (win Xp)

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    in WINDOWS e solo lì, puoi sempre provare ad "eseguire" il file, anche se non è .exe... non avrai la garanzia che la cosa funzioni, però quasi certamente andrà... e questo è il metodo birba (e te ne esci con due righe, usando Runtime)

    Altro metodo: determinare quale sia effettivamente la applicazione predefinita nel sistema per quel particolare tipo di file... qui la cosa si complica, ma c'è almeno una libreria che dovrebbe aiutarti in tutto ciò:

    https://jdic.dev.java.net/

    Buone letture.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Ho provato questo codice ma non funziona
    codice:
    	public static void openFile() {
    		String[] command = { "test.doc" };		
    
    		try {
    			Runtime rt = Runtime.getRuntime();
    			
    			Process proc = rt.exec(command);
    		}
    		catch (Exception e) {
    			e.printStackTrace();			
    		}		
    	}
    cosa devo mettere nel command?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    help

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Per utilizzare la funzione di apertura automatica del programma associato (cosa che funziona solo sotto Windows), devi richiamare il programma START:
    codice:
    String [] comando = {"C:\\Windows\\System32\\START.EXE", "test.doc"};
    try {
       Runtime.getRuntime().exec( comando );
    } catch (Exception e) { e.printStackTrace(); }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    io faccio così, chiaramente solo Windows

    codice:
    public class eseguiDocumento {
      public eseguiDocumento(String doc) {
        if (!doc.startsWith("\"") && !doc.endsWith("\"") && doc.indexOf(" ")!=-1) {
          doc="\""+doc+"\"";
        }
        String command = "cmd /c "+doc;
        try {
          Runtime r = Runtime.getRuntime();
          Process p = r.exec(command);
        }
        catch (Exception e) {
          System.out.println(e.toString());
        }
      }
    
      public static void main (String[] args) {
        eseguiDocumento word = new eseguiDocumento("C:/Documents and Settings/Andrea/Desktop/Dokken.doc");
        eseguiDocumento excel = new eseguiDocumento("C:\\Documents and Settings\\Andrea\\Desktop\\video list.xls");
        eseguiDocumento acrobat = new eseguiDocumento("C:\\Documents and Settings\\Andrea\\Desktop\\bound.pdf");
      }
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    E' equivalente... solo che utilizzando il comando START viene rilasciata la console (quindi il processo che lancia il comando viene terminato), mentre con CMD /C la console rimane bloccata finchè non viene chiuso il documento aperto.

    Veda l'autore del post quali sono le sue esigenze.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Se come nome del file gli passo
    d:\prova.doc

    funziona, ma siccome il nome del file lo costruisconel seguente modo

    String fileAbsPath = dir + File.separator + fileName

    il nome mi diventa

    d:\\prova.doc <--doppia barra

    Ed il comando non mi apre il file, questo è dovuto alla doppia barra

    Come faccio a dirgli di separarmi le due stringhe da una barra sola?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    utilizzo win xp s.p.2 e java 1.4.06

    Utilizzando il comando
    String [] comando = {"C:\\Windows\\System32\\START.EXE", "d:\\prova.doc"};
    mi viene dato quest'errore

    java.io.IOException: CreateProcess: C:\Windows\System32\START.EXE d:\prova.doc error=2
    at java.lang.Win32Process.create(Native Method)
    at java.lang.Win32Process.<init>(Win32Process.java:66 )
    at java.lang.Runtime.execInternal(Native Method)
    at java.lang.Runtime.exec(Runtime.java:566)
    at java.lang.Runtime.exec(Runtime.java:491)
    at java.lang.Runtime.exec(Runtime.java:457)
    at it.siai.util.FileUtil.openFile(FileUtil.java:196)

    Mentre utilizzando questo comando
    String command = "cmd /c "+"d:\\prova.doc";
    la prima volta il documento viene aperto (e lo chiudo) mentre la seconda volta che lo eseguo mi dice:

    Impossibile accedere al file. Il file è utilizzato da un altro processo.

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Originariamente inviato da abcd1000
    Se come nome del file gli passo
    d:\prova.doc

    funziona, ma siccome il nome del file lo costruisconel seguente modo

    String fileAbsPath = dir + File.separator + fileName

    il nome mi diventa

    d:\\prova.doc <--doppia barra

    Ed il comando non mi apre il file, questo è dovuto alla doppia barra

    Come faccio a dirgli di separarmi le due stringhe da una barra sola?
    Togli la parte evidenziata


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.