Dokument mit Standardprogramm öffnen

kirdie

Bekanntes Mitglied
Mein Programm hat eine Konfigurationsdatei. Um dem Benutzer das bearbeiten zu erleichtern, habe ich einen Menüeintrag Optionen->Konfigurationsdatei bearbeiten hinzugefügt.
Jetzt führe ich bei einem Klick auf das Menüitem folgenden Code aus:

Java:
Runtime.getRuntime().exec("gedit config/config.txt");

Das Problem ist aber, dass nicht jeder den Editor "gedit" benutzt. Wenn ich aber die Datei an sich öffnen lassen möchte, passiert folgendes:

Java:
Runtime.getRuntime().exec("config/config.txt");

Exception in thread "main" java.io.IOException: Cannot run program ".config/config.txt": java.io.IOException: error=13, Permission denied

Er versucht also die Textdatei als Programm auszuführen. Wie kann ich die Datei stattdessen mit dem Standard-Texteditor öffnen?
 
Oh mann, ich liebe Java 🙂

Dazu habe ich aber noch eine Frage: Wie bekomme ich mit, wenn die Datei geändert und/oder geschlossen wurde?

Mit den Prozessen mache ich das gerade so:

Java:
		final Process p = Runtime.getRuntime().exec("gedit config/config.txt");
		(new Thread() {			
			@Override
			public void run()
			{
				try {
					int returnCode = p.waitFor();
	                                // normal termination				        
                     if(returnCode==0)
					{
						frame.reloadConfig();
					}
				} catch (InterruptedException e) {}				
			}
		}).start();

(auch wenn das noch nicht funktioniert und mir direkt bei Programmstart schon die Null zurückgibt)

P.S.: Es war doch zu schön um wahr zu sein :-( Desktop.edit() wird von Ubuntu leider nicht unterstützt. Mein Code sieht jetzt so aus:

Java:
	try
		{
			Desktop desktop = Desktop.getDesktop();
			desktop.edit(new File("config/namesources.csv"));
		}
		catch(Exception e)
		{
			//Fallback
			final Process p = Runtime.getRuntime().exec("gedit config/namesources.csv");
			if(p.waitFor()!=0)
			{
				final Process q = Runtime.getRuntime().exec("edit config/namesources.csv");
			}
		}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben