Datei zum Bearbeiten mit externem Programm öffnen

Status
Nicht offen für weitere Antworten.

BeSp

Aktives Mitglied
Hallo,
ich möchte auf durch den Druck auf einen Button eine Text-Datei in einem Editor (z.b. Notepad, oder denjenigen der zum Bearbeiten von Textdateien standardmäßig vorgesehen ist) öffnen lassen. Mit diesem dann die geöffnete Datei bearbeiten, speichern, etc.

Wie könnte sowas gehen?
 

Leroy42

Top Contributor
Such' mal im Forum nach "externes Programm starten"

Leider kann ich dir kein Link geben, da die Suchparameter in
diesem Forum nicht per GET-Aufruf übergeben werden. :(
 

BeSp

Aktives Mitglied
Wie man ein externes Programm aufruft das hab ich also schon rausgefunden
Code:
Runtime.getRuntime().exec(" xyz.exe ");

Jetzt sei mir aber nur die zu öffnende Textdatei bekannt und nicht das Programm welches ich per .exe angeben könnte, da mein Programm auch auf anderen Rechnern laufen soll.

mfg
 

Leroy42

Top Contributor
Wenn eine Verknüpfung zur Dateiendung existiert,
reicht es einfach aus als Programm den Namen deines Dokuments aufzurufen.-
 

BeSp

Aktives Mitglied
Ich habe das jetzt mal probiert, und zwar hiermit:
Code:
try {
  Runtime.getRuntime().exec("c:/test.txt");
} catch (IOException e1) {
  e1.printStackTrace();
}
Das produziert allerdings eine Exception: "java.io.IOException: CreateProcess: c:\test.txt error=193"

Unter "Ausführen" (Windowstaste + R) lässt sich der Befehl "c:/test.txt" allerding ausführen und ein Editorfenster springt auf.
 

BeSp

Aktives Mitglied
Wunderbar, das funktioniert...
Aber damit macht man das ganze doch auf Windows fixiert oder? Denn es soll ja auch, laut Spezifikation unter Linux funktionieren.. Gibts da einen ähnlichen Kniff?
 

The_S

Top Contributor
nein, unter linux kannst du überhaupt keine "Dateien" ausführen. Da müsstest du das entsprechende Programm (pfad) mitsamt parameter aufrufen und hoffen, dass diese auch von dem Prog interpretiert werden.
 

BeSp

Aktives Mitglied
Okay danke, da haben wir ja schon die Lösung des Problems .. So wird das also nicht eingebaut werden können :)
Oder kann man vor Aufruf dieser Programmzeilen auf Windows-/Linux-Umgebung testen? ???:L
 

DocRandom

Top Contributor
Unter Windoof darf im Prinzip jeder alles, daher auch die Anfälligkeit für Viren, Trojaner, etc.
Unter Linux/Unix/Derivative , darf nur der Benutzer 'root' alles.
Der/die Benutzer (User) dürfen fast alles in Ihrem 'HOME-Verzeichnis' machen, aber auch da gibt es mitunter Einschränkungen.
Da speziell unter Linux/Unix/Derivative die Systeme nie gleich aufgebaut sind; außer man/frau verwendet FHS (File Hirachie Standard); ist es auch nicht so leicht diverse Programme einzuschleusen, außer ein(e) Depp(in) arbeitet ständig unter dem User 'root'.
Wenn man/frau also Plattform unabhängige Programme entwickelt; wofür sich JAVA unter anderem ja am besten eignet; tut man gut daran, externe Programme mit genauer Pfadangabe über Properties einzubinden.
Dies hatte Windows früher ja auch per *.INI Dateien gemacht.

mfg
DocRandom
 
Also ich bin selber Linux - Fan und Java Entwickler. Aber die Argumentation von DocRadom das es gut ist, dass jedes System bei Linux anders aussieht kann ich überhaupt nicht teilen. Wenn es die Linuxgemeinde endlich schaffen würde einen einheitlichen "Unterbau" zu schaffen, würden bestimmt auch Firmen endlich bessere Unterstützung für Linux bieten. Momentan muss man (wenn man es anwenderfreundlich machen möchte) für etliche Distributionen Installationspakete erstellen. Meiner Meinung nach würden folgende "kleinen" (ok, ok ich weiß, dass wird nicht gelingen) Änderungen Linux zum Durchbruch verhelfen:
1. Einheitliche Paketsystem
2. Einheitlicher "Unterbau"
3. Schnittstelle für propritäre Treiber

Um mal kurz zum eigentlichen Thema zurückzukommen
Seit Java 6 gibt es folgende Möglichkeit:
Über die Klasse java.awt.Desktop können StandardProgramme geöffnet werden. bspw folgende Methoden:
- browse() öffnet Browser
- open() lädt eine Datei mit der für Ihr registrierten Typ
- print() Druck mit der entsprechenden Anwendung

PS.: und das was "Hobbit_Im_Blutrausch" schreibt ist falsch.
Man kann sehr wohl unter Linux Dateien mit Programmen verknüpfen wie in Windows.
In Windows steht das zeug in der Registry aber auch hier BENÖTIGST du den PFAD zum Programm!!!!!!!!!
Unter Linux steht das halt nicht inder Registry sondern in der PATH Variablen...
Wenn man also unter Linux eine Datei namens "text.txt" aufruft, funktioniert das selbstverständlich.
Ein unterschied ist, dass Linux die Datei auch ohne Endung, also nur "text" korrekt öffnen würde, da es nicht nach der Dateiändung zuordnet, sonder nach Dateiinhalt.
 

b0unc3

Bekanntes Mitglied
ich muss das Thema nochma wachrufen...

ich versuche eine .txt datei zu öffnen.. das scheint auch zu klappen.. nur leider öffnet er sie nicht, aber das müsste er doch oder?

Code:
import java.io.*;

public class IgNAIO {
	public static void main(String[] args) {
		BufferedReader r = new BufferedReader(
				new InputStreamReader(System.in));
		
		try {
			Runtime.getRuntime().exec("cmd /d:\\Workspace\\Java\\IgNAIO\\bin\\test.txt");
			System.out.println("Datei geöffnet");
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		System.out.println("Zum beenden Enter drücken");
		try {
			r.readLine();
		} catch (IOException ex) {
			ex.getMessage();
		}
	}
}

zur laufzeit bekomme ich folgende ausgabe:

Datei geöffnet
Zum beenden Enter drücken
 

Wildcard

Top Contributor
Was macht Windows denn wenn man den Namen einer txt Datei in der Eingabeaufforderung eingibt?
Öffnet sich da was? :shock:
 

Wildcard

Top Contributor
Kann auf Linux schlecht nachvollziehen, aber ich empfehle dir den Java 6 Weg:
Code:
Desktop.open(file);
 

b0unc3

Bekanntes Mitglied
juhuu so gehts danke :).. jez hab ich nur noch 1 prob.. wie kann ich den Pfad erfragen, von wo aus das Programm gestartet wurde? Ich will dann später die txt files mit ins .jar file packen.. aber das hat ja dann jeder wo anders liegen ^^

//edit:

achja und komm ich dann auch ins jar file rein?
 

Wildcard

Top Contributor
Resourcen aus einer jar lädt man über den Classloader (getClass().getResource ), wo das jar liegt ist dafür nicht relevant.
 

b0unc3

Bekanntes Mitglied
also.. ich hab mein programm aus eclipse raus exportiert (als .jar file).. dann hab ich die datei (Datei.rar) direkt ins .jar file gepackt (also keine unterordner).. wenn ich aber nun auf den Button drauf klicke, dann passiert nichts, außer das der button solange "gedrückt" erscheint, bis ich mit dem courser von dem button runter gehe...

Code:
			try {
				Desktop.getDesktop().open(new File(getClass().getResource("Datei.rar").toString()));
			} catch (IOException ex) {
				JOptionPane.showMessageDialog(null, ex.getMessage());
			}

kann mir jemand sagen, was ich falsch gemacht hab? ^^
 

The_S

Top Contributor
b0unc3 hat gesagt.:
ich muss das Thema nochma wachrufen...

ich versuche eine .txt datei zu öffnen.. das scheint auch zu klappen.. nur leider öffnet er sie nicht, aber das müsste er doch oder?

Code:
import java.io.*;

public class IgNAIO {
	public static void main(String[] args) {
		BufferedReader r = new BufferedReader(
				new InputStreamReader(System.in));
		
		try {
			Runtime.getRuntime().exec("cmd /d:\\Workspace\\Java\\IgNAIO\\bin\\test.txt");
			System.out.println("Datei geöffnet");
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		System.out.println("Zum beenden Enter drücken");
		try {
			r.readLine();
		} catch (IOException ex) {
			ex.getMessage();
		}
	}
}

zur laufzeit bekomme ich folgende ausgabe:

Datei geöffnet
Zum beenden Enter drücken

Äh, was soll das denn sein? Das /c steht für Command und nicht für den Laufwerksbuchstaben! Dein Befehl muss

Code:
Runtime.getRuntime().exec("cmd /c D:\\Workspace\\Java\\IgNAIO\\bin\\test.txt");

Warum willst du denn die Textdatei unbedingt in dem Editor öffnen? Solang es sich nur um eine pure Textdatei handelt, kannst du sie ja auch in einem extra Fenster in einem JTextArea öffnen. Das wäre dann auch Plattformunabhängig ...
 

b0unc3

Bekanntes Mitglied
es war einfach nur ein test zum öffnen von dateien.. zu meinem anderen problem haste nich zufällig ne lösung? ^^
 

b0unc3

Bekanntes Mitglied
hab da jetzt mal reingeschaut udn n bisl hin und her probiert.. mein code sieht jetzt so aus:

Code:
			try {
				InputStream is = getClass().getClassLoader().getSystemResourceAsStream("Datei.rar");
				System.out.println(is.read()); // Ausgabe: 82
			} catch (Exception ex) {
				System.err.println(ex);
				JOptionPane.showMessageDialog(null, ex.getMessage());
			}

allerdings öffnet sich die datei "Datei.rar" nicht :(
 

The_S

Top Contributor
Damit haste auch nur nen Stream von dem du liest. Das hat mit dem öffnen von Dateien im Jar rein gar nichts zu tun.

Warum brauchst du das denn so unbedingt?
 

b0unc3

Bekanntes Mitglied
und wie kann ich die datei dann öffnen? mit Desktop.getDesktop().open(File) << das geht ja nit der nimmt ja nur Files..

wollte das mal zur übung machen, damit ich auch ma n bisl in das arbeiten mit files reinkomme.. nur iwiw hab ich mir das ganze leichter vorgestellt ^^
 

Wildcard

Top Contributor
Als Stream nützt dir das nichts.
Du brauchst getResource, das liefert dir eine URL und daraus kannst du dir ein File Objekt basteln.
 
G

Guest

Gast
danke... hab das ganze jez so

Code:
				File f = new File(getClass().getResource("Datei.rar").toURI());
				Desktop.getDesktop().open(f);

in eclipse funzt das auch (Die Datei "Datei.rar" ist im bin ordner).. da wird die datei geöffnet, aber wenn ich das ganze dann als jar exportiere und die Datei.rar mit da rein packe (nachträglich) dann bekomm ich folgende meldung:

URI is not hierarchical
 

b0unc3

Bekanntes Mitglied
ich hab noch mal gegoogelt und binn auf folgendes gestoßen:

Why are you trying to create a File object from your resource? Are you not aware that if your app lives in a Jar, for example, you can't use the File API on it (because it isn't a 'file' at that point). Are you wanting to open that resource?
Use getClass().getResourceAsStream(pathjasper) - assuming pathjasper is correct in the first place, that is.

kann mir jemand sagen, wie ich das mit

Code:
getClass().getResourceAsStream(pathjasper)

umsetzen kann?, also auch so, dass sich das öffnet?
 
G

Guest

Gast
*push* :roll:

ich hab echt alles versucht, ich schaffs einfach nit :cry:
 

b0unc3

Bekanntes Mitglied
okay danke ersma.. aber wie mach ich n das am besten? ich hab jez mal folgendes versucht:

Code:
	try {
				FileInputStream fis = null;
				FileOutputStream fos = null;
				File f = null;
				
				fis = new FileInputStream(new File((getClass().getResourceAsStream("DFind.rar").toString())));
				fos = new FileOutputStream(f.createTempFile("data", ".rar"));
			} catch (Exception ex) {
				System.err.println(ex);
				JOptionPane.showMessageDialog(null, ex.getMessage());
			}

würde das so gehen? falls ja, wie soll ich jez an das temp file dran kommen?.. falls nein, wie dann? ^^

Mfg. b0unc3
 

The_S

Top Contributor
Nochmal die Frage:

Was machst du da eigentlich? Bzw. was willst du machen? Könnte mir vorstellen, dass du da viel zu komplex denkst. Warum willst du die Datei unbedingt "starten"? Warum muss die Datei unbedingt in einem Jar liegen? Du weißt, dass das Plattformabhängig ist?
 

b0unc3

Bekanntes Mitglied
also.. ich habe vor mir so eine art "starterprogramm" zu schreiben, wo dann ein paar kleinere Programme drinne sind, die man dann einfach per klick starten kann oder halt auch rar dateien, txt, etc. .. der hauptgrund warum ich das mache ist, damit ich was lerne.
 

b0unc3

Bekanntes Mitglied
doch hatte ich eigentlich vor, aber da ich ja jetzt weiß, dass es nicht geht, lass ich die dateien einfach draußen in unterordnern :roll:

Ps.: Danke nochmal für eure Hilfe
 

The_S

Top Contributor
Ein "Starterprogramm", welches Dateien startet, die im Jar liegen? Den Sinn versteh ich zwar nicht, aber hat sich jetzt ja eh erledigt ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
S externe Datei erstellen, oeffnen, bearbeiten Java Basics - Anfänger-Themen 2
P mit java text-datei auslesen und weiter bearbeiten Java Basics - Anfänger-Themen 3
D Datei innerhalb einer zip bearbeiten Java Basics - Anfänger-Themen 8
M HTML Datei bearbeiten Java Basics - Anfänger-Themen 14
R doc-Datei einlesen und bearbeiten Java Basics - Anfänger-Themen 2
K Datei öffnen, lesen, bearbeiten, in neuer datei speichern Java Basics - Anfänger-Themen 12
W JAR - Datei öffnen und bearbeiten ! Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
A CSV-Datei Verarbeiten Java Basics - Anfänger-Themen 8
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
T Printwriter Datei nicht überschreiben Java Basics - Anfänger-Themen 10
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
E extern Datei von meinem Computer aufmachen Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
J CSV-Datei verarbeiten Java Basics - Anfänger-Themen 27
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
EchtKeineAhnungManchmal Controller aus FXML Datei entfernen Java Basics - Anfänger-Themen 49
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
Kotelettklopfer Sqlite DB aus Java Datei ansprechen. Java Basics - Anfänger-Themen 147
C XML Datei speichern und laden Java Basics - Anfänger-Themen 18
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
J Json Datei auslesen Java Basics - Anfänger-Themen 4
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
I JAX-WS.... Datei ".ical" zurückgeben.... Wie annotieren? Java Basics - Anfänger-Themen 1
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
E Pfadangaben bei Ausführbarer Jar Datei Java Basics - Anfänger-Themen 8
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
I Datei als Stream aus Ressource laden? Java Basics - Anfänger-Themen 2
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
R Wie installiere ich Jdownloadersetup.sh datei mit debian Java Basics - Anfänger-Themen 2
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
O Best Practice Datei-Pfad zerlegen Java Basics - Anfänger-Themen 4
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
S Verbindung von einer Excel Datei zu Java-- Java Basics - Anfänger-Themen 4
G In Datei schreiben Java Basics - Anfänger-Themen 1
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
J bundel - Datei wird nicht gefunden. Trotz STRG-SHIFT-J Java Basics - Anfänger-Themen 2
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben