Apri un file di testo nell’editor di testo predefinito … tramite Java?

OK. Domanda semplice. Forse non è una risposta così semplice, però:

Ho un file che ho scaricato in Java e so che è un file di testo. C’è un modo in cui posso usare Java per aprire quel file di testo in qualunque sia l’editor di testo predefinito? Deve funzionare per tutti i sistemi operativi, altrimenti lo renderei aperto solo con Blocco note.

: \ Immagino che se non ci fosse modo di farlo potrei usare JOptionPane e mostrare il contenuto del file di testo …

Puoi farlo con:

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

Questo link all’articolo tutorial su java.awt.Desktop :

Java ™ Standard Edition versione 6 riduce il divario tra prestazioni e integrazione di applicazioni native e applicazioni Java. Insieme alla nuova funzionalità del vassoio di sistema, al supporto della schermata iniziale e alla stampa avanzata per JTables, Java SE versione 6 fornisce l’API Desktop (java.awt.Desktop), che consente alle applicazioni Java di interagire con le applicazioni predefinite associate a tipi di file specifici su la piattaforma host.

È multipiattaforma, ma potrebbe non essere supportata ovunque. C’è un metodo che puoi chiamare per verificare se l’API Desktop è disponibile, chiamata isDesktopSupported (vedi il link per maggiori spiegazioni). L’altro giorno stavo usando questa API per aprire i PDF in un client Swing.

Sfortunatamente c’è un bug noto che riguarda alcune piattaforms Windows (XP e 2003) che causeranno il crash della JVM. Scrivi una volta, esegui il debug ovunque , come al solito. Ad ogni modo, per Windows c’è una bella soluzione alternativa che utilizza ancora l’applicazione preferita dell’utente:

 if (System.getProperty("os.name").toLowerCase().contains("windows")) { String cmd = "rundll32 url.dll,FileProtocolHandler " + file.getCanonicalPath(); Runtime.getRuntime().exec(cmd); } else { Desktop.getDesktop().edit(file); } 
 Desktop.getDesktop().edit(File f); 

Certamente è ansible configurare nell’editor di testo e utilizzare Runtime.exec per avviarlo. Ma non riesco a pensare ad alcun modo per determinare l’editor di default, specialmente in un modo indipendente dal sistema.

Forse la tua migliore opzione è quella di identificare quale delle più popolari piattaforms su cui ti trovi e poi trovare un modo per avviare l’editor predefinito su quella piattaforma. Ad esempio, su Window otterrai l’editor di default se fai “start filename.txt”, e sono abbastanza sicuro che ci sia un equivalente Linux.