FileOutputStream richtige Pfadangabe?

Status
Nicht offen für weitere Antworten.
Hallo Leute,
ich hänge gerade an einem Problem das ich nicht verstehe und brauche eure Kompetenz.
Ich habe folgende Klasse:

Java:
import java.io.*;
import javax.swing.JOptionPane;

public class FileWriter 
{
	OutputStream fos = null;
	
	public void myWriter(ArtikelList liste)
	{
		try
		{
			fos = new FileOutputStream("save/list.ser");
			ObjectOutputStream o = new ObjectOutputStream( fos ); 
			o.writeObject(liste);  
		}
		catch ( IOException e ) 
		{ 
			writeError(e);
		} 
		finally 
		{ 
			try 
			{ 
				fos.close(); 
			} 
			catch ( Exception e ) 
			{ 
				System.err.println(e.getMessage());
			} 
		}
	}
	
	public void writeError(IOException e)
	{
		JOptionPane.showMessageDialog(null,e, "Fehler x003", JOptionPane.ERROR_MESSAGE);
	}
	
	public void classError(Exception e)
	{
		JOptionPane.showMessageDialog(null,e, "Fehler x006", JOptionPane.ERROR_MESSAGE);
	}
}

Wie zu sehen ist soll ein Objekt per ObjectOutputStream geschrieben werden. Das klappt auch ganz gut solange ich dies in Eclipse mache. Die Datei list.ser wird im Ordner save erstellt und kann später auch wieder geladen werden.
Wenn ich jedoch ein Runnable JAR erstelle wird mir immer eine FileNotFoundException geworfen. Was mache ich falsch? Folgende Ordnerstruktur liegt vor:
Eclipse: bin, save, scr
JAR: JAR File, save im selben Ordner
 

Murray

Top Contributor
Die Anwendung weiß erstmal nicht, wo das Jar-File liegt. Du könntest jetzt vom Classloader per getResource(z.B. mit dem Namen einer .class-Datei) eine URL verschaffen, aus deren String-Repräsentation sich der Pfad zum Jar-File konstruieren lässt.
Schön ist das alles aber nicht, weil es a) dann nur noch mit Jar-Files, aber nicht mehr mit "losen" Class-Files läuft und b) weil man m.E. keine Annahmen treffen sollte, in welcher Verzeichnishierarchie später irgendwelche Jar-Files liegen.
 
S

Spacerat

Gast
Die Anwendung weiß erstmal nicht, wo das Jar-File liegt. Du könntest jetzt vom Classloader per getResource(z.B. mit dem Namen einer .class-Datei) eine URL verschaffen, aus deren String-Repräsentation sich der Pfad zum Jar-File konstruieren lässt.
...eben. Ungefähr so:
Java:
      public URL getDocumentBase()
      {
        URL rc = getClass().getResource(getClass().getSimpleName() + ".class");
        if(rc.getProtocol().equalsIgnoreCase("jar")) {
          try {
            String tmp = rc.toString().substring(4, rc.toString().indexOf("!/"));
            tmp = rc.toString().replaceAll("jar:", "").replaceAll("file:/", "file://");
            tmp = tmp.substring(0, tmp.lastIndexOf("!/"));
            rc = new URL(null, tmp);
          } catch(MalformedURLException e) {
            e.printStackTrace();
            rc = null;
          }
        }
        return rc;
      }
Schön ist das alles aber nicht, weil es a) dann nur noch mit Jar-Files, aber nicht mehr mit "losen" Class-Files läuft und b) weil man m.E. keine Annahmen treffen sollte, in welcher Verzeichnishierarchie später irgendwelche Jar-Files liegen.
fällt bei oben stehender Methode aus. Schöner wirds dadurch aber auch nicht.
 
Zuletzt bearbeitet von einem Moderator:
So ich habs mir nochmal angeguckt, blicke aber dennoch nicht durch. Oder um es auf den Punkt zu bringen was soll ich jetzt tun? Jetzt wurde mir zwar gesagt wie man es nicht schön macht, was bei mir die Frage aufwirft wie es schön zu machen ist.
Wie macht man es den üblicherweise?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
noah1407 Fileoutputstream Java Basics - Anfänger-Themen 4
S Datei-Speicherort von FileOutputStream Java Basics - Anfänger-Themen 4
M Fileoutputstream: Linux Dateinamen mit Umlaute Java Basics - Anfänger-Themen 4
J FileOutputStream aktuelle Speicher Pfad ausgeben Java Basics - Anfänger-Themen 13
J FileOutputStream Java Basics - Anfänger-Themen 3
J FileOutputStream write Java Basics - Anfänger-Themen 19
A fileoutputstream ändern Java Basics - Anfänger-Themen 14
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
F FileOutputStream.write Java Basics - Anfänger-Themen 2
N FileOutputStream und existenz von Datei überprüfen Java Basics - Anfänger-Themen 2
O OOP FileOutputStream überschreibt ganzen inhalt der txt Java Basics - Anfänger-Themen 4
hdi Datentypen FileOutputStream#write(int) mit ints? Java Basics - Anfänger-Themen 5
A FileOutputStream -> byte[] (ohne File) Java Basics - Anfänger-Themen 6
G FileOutputStream generieren Java Basics - Anfänger-Themen 2
M FileOutputStream und zu große Zahlen! Java Basics - Anfänger-Themen 10
C FileInputStream und FileOutputStream Java Basics - Anfänger-Themen 4
krgewb Keine richtige Doku Java Basics - Anfänger-Themen 5
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
M Kennt jemand die richtige Lösung? Java Basics - Anfänger-Themen 7
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
D Richtige Kommentierung Klassenvariablen Java Basics - Anfänger-Themen 19
G Die richtige Methode aus einer DTO auszurufen Java Basics - Anfänger-Themen 27
E Die richtige Suche in der API Java Basics - Anfänger-Themen 1
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
L Collections Ist eine Arraylist hier das richtige? Java Basics - Anfänger-Themen 12
E Mastermind programmieren, wie den falschen Platz aber richtige Farbe schecken? Java Basics - Anfänger-Themen 23
A OOP Richtige Verwendung von ArrayList und equals Java Basics - Anfänger-Themen 24
I Richtige Java-Version finden? Java Basics - Anfänger-Themen 17
Meeresgott Richtige Dokumentation Java Basics - Anfänger-Themen 1
Meeresgott Richtige Dokumentation Java Basics - Anfänger-Themen 22
P Klassen Richtige Anwendung einer Enum-Klasse Java Basics - Anfänger-Themen 11
H Ist Java überhaupt die richtige Sprache für das Projekt? Java Basics - Anfänger-Themen 8
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
A richtige Kombination aus Werte- und Referenztypen Java Basics - Anfänger-Themen 63
J Erste Schritte Verständnisfrage im Bezug auf das (richtige) Programmieren Java Basics - Anfänger-Themen 5
E Richtige Ausgabe nur mit toString() - Warum? Java Basics - Anfänger-Themen 4
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
K Welche Java Version ist die richtige Java Basics - Anfänger-Themen 3
X Methoden Wort aus String löschen und richtige Verschachtelung Java Basics - Anfänger-Themen 17
X Ist Java für mich das richtige? Java Basics - Anfänger-Themen 10
D Simulation von Geburt/Tod und "richtige" Erkennung eines Hindernisses Java Basics - Anfänger-Themen 7
F In ArrayList wird nicht der richtige Wert gespeichert Java Basics - Anfänger-Themen 6
S Richtige String-Variable finden Java Basics - Anfänger-Themen 3
K Richtige Pfadangabe einer Textdatei Java Basics - Anfänger-Themen 7
P Ist Java die richtige Programmiersprache dafür? Java Basics - Anfänger-Themen 29
Dit_ invokeLater | richtige Anwendung Java Basics - Anfänger-Themen 2
L eine richtige anfänger-frage Java Basics - Anfänger-Themen 3
D Der richtige Layout Manager Java Basics - Anfänger-Themen 8
P Keine richtige Codeabarbeitung?! Java Basics - Anfänger-Themen 9
U Richtige Benutzung der API-Doku Java Basics - Anfänger-Themen 8
G Richtige Syntax für Bruch Java Basics - Anfänger-Themen 12
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
G Polymorphismus und die richtige Anwendung Java Basics - Anfänger-Themen 6
B Ist Java das richtige für mich? Java Basics - Anfänger-Themen 12
W Java das richtige? Java Basics - Anfänger-Themen 9
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
M Welche Javaversion ist die Richtige? Java Basics - Anfänger-Themen 14
S Java Games Programieren. Der richtige Weg dorthin. Java Basics - Anfänger-Themen 4
M Java die richtige Sprache? Java Basics - Anfänger-Themen 4
S Web Mining - XML Filter der richtige Anstatz? Java Basics - Anfänger-Themen 2
W Java Web Start das richtige? Java Basics - Anfänger-Themen 11
J Richtige Auagabe in einer *.txt Java Basics - Anfänger-Themen 2
B Ist Java das richtige für folgendes Programm! Java Basics - Anfänger-Themen 2
T Bild drehen + richtige größe berechnen Java Basics - Anfänger-Themen 4
M Richtige Paarungen aus Array ausgeben Java Basics - Anfänger-Themen 2
S richtige antworten [%] ausgabe Java Basics - Anfänger-Themen 7
bernd Richtige Pfadangabe für das Kopieren von Dateien Java Basics - Anfänger-Themen 10
A Java wirklich das richtige? Java Basics - Anfänger-Themen 20
B Paar richtige Anfängerfragen Java Basics - Anfänger-Themen 7
A Pfadangabe Datei senden Java Basics - Anfänger-Themen 14
S Pfadangabe Java Basics - Anfänger-Themen 26
A Datentypen String - Probleme bei Pfadangabe Java Basics - Anfänger-Themen 14
Q Pfadangabe für zu speichernde Bilder Java Basics - Anfänger-Themen 2
L Input/Output FileReader Pfadangabe Java Basics - Anfänger-Themen 7
eLogic JDBC: Relative Pfadangabe in JAR Java Basics - Anfänger-Themen 14
D Pfadangabe unter windows Java Basics - Anfänger-Themen 7
M Jpg und wav datei pfadangabe bei Runnable Jar file Java Basics - Anfänger-Themen 2
Piwi Relative Pfadangabe bei Bildern Java Basics - Anfänger-Themen 2
Strahlungsleck [gelöst]File Pfadangabe funktioniert nicht mit Servername/IP Java Basics - Anfänger-Themen 2
D relative Pfadangabe auf überverzeichnis Java Basics - Anfänger-Themen 3
S Relative Pfadangabe funzt nicht Java Basics - Anfänger-Themen 2
A relative Pfadangabe in jars Java Basics - Anfänger-Themen 2
T öffnen einer Datei mit relativer Pfadangabe Java Basics - Anfänger-Themen 8
G Pfadangabe? Java Basics - Anfänger-Themen 2
G Jar archiv Pfadangabe! Java Basics - Anfänger-Themen 5
B Relative/Absolute Pfadangabe. Wie unterscheiden? Java Basics - Anfänger-Themen 4
L Datenbankanbindung ODBC falsche pfadangabe? Java Basics - Anfänger-Themen 3
G zusätzliche "" bei Pfadangabe z.B. bei FileReader Java Basics - Anfänger-Themen 2
F Leerzeichen in Pfadangabe beim Befehl exec() Java Basics - Anfänger-Themen 5
M relative Pfadangabe beim laden von properties Datei Java Basics - Anfänger-Themen 4
G relative Pfadangabe Java Basics - Anfänger-Themen 3
M Laden eines Image mit relativer Pfadangabe Java Basics - Anfänger-Themen 3
E Laufwerksangabe aus Pfadangabe (String) filtern Java Basics - Anfänger-Themen 10
G Problem mit Vector() + Pfadangabe + Linux Java Basics - Anfänger-Themen 8
S JTree valueChanged() Ausgabe leider immer mit Pfadangabe! Java Basics - Anfänger-Themen 4
M Pfadangabe zu ORDNER von Klassenverzeichnis aus? Java Basics - Anfänger-Themen 3
V wieder mal "relative Pfadangabe" Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben