Datei in Java einlesen

BlunatiX

Mitglied
Hallo liebe Community,
ich habe eine *.txt-Datei, die ich in Eclipse in das default package eingefügt habe.
Nun möchte ich diese Datei mit
Java:
 fileEinstellungen = new File(getClass().getResource("Einstellungen.txt"));
initialisieren, um dann Werte auszulesen. Dabei bekomme ich allerdings den Fehler:
The constructor File(URL) is undefined

Weiß jemand, was ich falsch mache bzw. wie es funktionieren würde?
Schonmal danke im Voraus.
 
Hallo;

um eine txt Datei einzulesen brauchst du diese Klasse:

Java:
import java.io.InputStream;
import java.net.URL;

final public class ResLoder {
	
	public ResLoder() {
		
	}
	
	public static InputStream load(String pff) {
		InputStream input = ResLoder.class.getResourceAsStream(pff);
		if(input == null) {
			input = ResLoder.class.getResourceAsStream("/"+pff);
		}
		return input;
	}

	public URL loadURL(String pff) {
		return getClass().getClassLoader().getResource(pff);
	}
}

dann musst du in deinem Projekt einen neuen Ordner anlegen.
Diesen rechts anklicken; dann unter Build Path -> Use as Source Folder anklicken.
In diesem Ordner speicherst du deine txt Datei.
z.B. test.txt
Dann noch dein Projekt rechts anklicken und Refresh.

jetzt kannst du die Datei einlesen.

Java:
Scanner sc = new Scanner(ResLoder.load("test.txt"));
while(sc.hasNext()) {
    System.out.println(sc.next());
}
sc.close();
 

kay73

Bekanntes Mitglied
...Dabei bekomme ich allerdings den Fehler:
The constructor File(URL) is undefined.
Du musst nur in die API-Doku schauen: Class.getResource() hat den Rückgabetyp URL. Es gibt keinen Konstruktur in der Klasse File, der diesen Typ als Argument akzeptiert.

Wenn Du die Datei "Einstellungen.txt" im Klassenpfad liegen hast, hole Dir einen InputStream via
Code:
getClass().getResourceAsStrewm("/Einstellungen.txt");
und arbeite damit.
 
Zuletzt bearbeitet:

BlunatiX

Mitglied
Das ganze funktioniert, wenn man Zeile mit:
[Java]fileEinstellungen = new File("C://test//einstellungen2spielerreaktor.txt");[/Java]
ersetzt, allerdings ist die Textdatei dann ausgelagert und das ist nicht wie ich es gerne lösen würde.

Hier den Quellcode der ganzen Klasse:

[Java]
// Importe
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

// Klasse Einstellungen für die Einstellungen
public class Einstellungen {
// Einbinden anderer Klassen
GUI GUI = new GUI();
Menu Menu = new Menu();

// Klassen-Initialisierungen (JFrame, JPanel, File und Formatter)
JFrame fEinstellungen;
JPanel pEinstellungen;

File fileEinstellungen;
Formatter fileEinstellungenFormatter;

// Methoden-Initialisierungen (Label, Kontrollkästchen, Textfeld, Dropdownmenü und Button)
JLabel labEinstellungenUeberschrift;
JLabel labEinstellungenSpielUeberschrift;
JLabel labEinstellungenSpielAbc;
JLabel labEinstellungenSpielEinwohnerzahlen;
JLabel labEinstellungenSpielTicTacToe;
JLabel labEinstellungenBild;

JCheckBox cbEinstellungenSpielAbc;
JCheckBox cbEinstellungenSpielEinwohnerzahlen;
JCheckBox cbEinstellungenSpielTicTacToe;

JLabel labEinstellungenSpieldauer;
JLabel labEinstellungenSpieldauerAktuell;

JTextField tfEinstellungenSpieldauer;

JLabel labEinstellungenTastenUeberschrift;
JLabel labEinstellungenTastenBelegung;

JComboBox<Object> combEinstellungenTastenBelegungSpieler1;
JComboBox<Object> combEinstellungenTastenBelegungSpieler2;

JButton bEinstellungenSpeichern;
JButton bEinstellungenZuMain;

// Bilderimport
Icon iconEinstellungenHintergrund = new ImageIcon(getClass().getResource("ImageEinstellungen.png"));

//Anlegen einer Farbe
Color panelblau = new Color(110, 205, 235);

// Variablen-Deklaration und -Initialisierung statischer Variablen (boolean, int und char)
static boolean einstellungenSpielAbcSpielen = true,
einstellungenSpielEinwohnerzahlenSpielen = true,
einstellungenSpielTicTacToeSpielen = true;
static char einstellungenTastenBelegungSpieler1 = 'a',
einstellungenTastenBelegungSpieler2 = 'j';
static int einstellungenSpieldauer = 10,
einstellungenTastenBelegungSpieler1Index,
einstellungenTastenBelegungSpieler2Index;

// Methode Einstellungsmenue als Fenster für die Darstellung des Einstellungsmenüs
public void Einstellungsmenue() {

// JFrame: Klassendeklaration und Klassenkonkretisierung
fEinstellungen = new JFrame("2-Spieler-Reaktor");
fEinstellungen.setSize(800, 600);
fEinstellungen.setLocationRelativeTo(null);
fEinstellungen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fEinstellungen.setLayout(null);
fEinstellungen.setResizable(false);
fEinstellungen.setVisible(true);
fEinstellungen.setFocusable(true);

// JPanel: Klassendeklaration und Klassenkonkretisierung
pEinstellungen = new JPanel();
pEinstellungen.setBounds(250, 100, 300, 250);
pEinstellungen.setBackground(panelblau);
pEinstellungen.setLayout(null);

// JMenuBar: Aufrufen einer Methode und Einbinden der Menüleiste
Menu.MenuBarAnzeigen();
fEinstellungen.setJMenuBar(Menu.MenuBar);

// JLabel: Methodendeklaration und Methodenkonkretisierung (5 Label)
labEinstellungenUeberschrift = new JLabel("Einstellungen");
labEinstellungenUeberschrift.setBounds(280, 60, 240, 40);
labEinstellungenUeberschrift.setHorizontalAlignment(SwingConstants.CENTER);
labEinstellungenUeberschrift.setVerticalAlignment(SwingConstants.TOP);
labEinstellungenUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 25));

labEinstellungenSpielUeberschrift = new JLabel("Welche Spiele sollen gespielt werden?");
labEinstellungenSpielUeberschrift.setBounds(0, 10, 290, 25);
labEinstellungenSpielUeberschrift.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 15));

labEinstellungenSpielAbc = new JLabel("ABC:");
labEinstellungenSpielAbc.setBounds(0, 35, 150, 25);
labEinstellungenSpielAbc.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielAbc.setFont(new Font("Tahoma", Font.PLAIN, 15));

labEinstellungenSpielEinwohnerzahlen = new JLabel("Einwohnerzahlen:");
labEinstellungenSpielEinwohnerzahlen.setBounds(0, 55, 150, 25);
labEinstellungenSpielEinwohnerzahlen.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielEinwohnerzahlen.setFont(new Font("Tahoma", Font.PLAIN, 15));

labEinstellungenSpielTicTacToe = new JLabel("Tic Tac Toe:");
labEinstellungenSpielTicTacToe.setBounds(0, 75, 150, 25);
labEinstellungenSpielTicTacToe.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielTicTacToe.setFont(new Font("Tahoma", Font.PLAIN, 15));

labEinstellungenBild = new JLabel(iconEinstellungenHintergrund);
labEinstellungenBild.setBounds(0, 0, 790, 550);

// JCheckBox: Methodendeklaration und Methodenkonkretisierung (3 CheckBoxen)
// und ifFunktionen zur Ermittlung des richtigen Auswahlstands bei Aufruf des Eigenschaftenmenüs
cbEinstellungenSpielAbc = new JCheckBox();
cbEinstellungenSpielAbc.setBounds(150, 35, 20, 20);
cbEinstellungenSpielAbc.setVerticalAlignment(SwingConstants.CENTER);
cbEinstellungenSpielAbc.setBackground(panelblau);
if (einstellungenSpielAbcSpielen == true) {
cbEinstellungenSpielAbc.setSelected(true);
} else if (einstellungenSpielAbcSpielen == false) {
cbEinstellungenSpielAbc.setSelected(false);
}

cbEinstellungenSpielEinwohnerzahlen = new JCheckBox();
cbEinstellungenSpielEinwohnerzahlen.setBounds(150, 55, 20, 20);
cbEinstellungenSpielEinwohnerzahlen.setVerticalAlignment(SwingConstants.CENTER);
cbEinstellungenSpielEinwohnerzahlen.setBackground(panelblau);
if (einstellungenSpielEinwohnerzahlenSpielen == true) {
cbEinstellungenSpielEinwohnerzahlen.setSelected(true);
} else if (einstellungenSpielEinwohnerzahlenSpielen == false) {
cbEinstellungenSpielEinwohnerzahlen.setSelected(false);
}

cbEinstellungenSpielTicTacToe = new JCheckBox();
cbEinstellungenSpielTicTacToe.setBounds(150, 75, 20, 20);
cbEinstellungenSpielTicTacToe.setVerticalAlignment(SwingConstants.CENTER);
cbEinstellungenSpielTicTacToe.setBackground(panelblau);
if (einstellungenSpielTicTacToeSpielen == true) {
cbEinstellungenSpielTicTacToe.setSelected(true);
} else if (einstellungenSpielTicTacToeSpielen == false) {
cbEinstellungenSpielTicTacToe.setSelected(false);
}

// JLabel: Methodendeklaration und Methodenkonkretisierung (2 Label)
labEinstellungenSpieldauer = new JLabel("Runden pro Spiel:");
labEinstellungenSpieldauer.setBounds(0, 135, 150, 25);
labEinstellungenSpieldauer.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpieldauer.setFont(new Font("Tahoma", Font.PLAIN, 15));

labEinstellungenSpieldauerAktuell = new JLabel("Aktuell: " + einstellungenSpieldauer);
labEinstellungenSpieldauerAktuell.setBounds(200, 135, 100, 25);
labEinstellungenSpieldauerAktuell.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpieldauerAktuell.setFont(new Font("Tahoma", Font.PLAIN, 15));

// JTextField: Methodendeklaration und Methodenkonkretisierung (1 Textfeld)
tfEinstellungenSpieldauer = new JTextField("" + einstellungenSpieldauer);
tfEinstellungenSpieldauer.setBounds(140, 135, 35, 23);
tfEinstellungenSpieldauer.setFont(new Font("Tahoma", Font.PLAIN, 15));

// JLabel: Methodendeklaration und Methodenkonkretisierung (2 Label)
labEinstellungenTastenUeberschrift = new JLabel("Tastenbelegung:");
labEinstellungenTastenUeberschrift.setBounds(0, 195, 250, 25);
labEinstellungenTastenUeberschrift.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenTastenUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 15));

labEinstellungenTastenBelegung = new JLabel("Spieler 1: Spieler 2:");
labEinstellungenTastenBelegung.setBounds(0, 220, 250, 25);
labEinstellungenTastenBelegung.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenTastenBelegung.setFont(new Font("Tahoma", Font.PLAIN, 15));

// ComboBox: Methodendeklaration und Methodenkonkretisierung (2 Comboboxen)
// und Deklarierung zweier CharArrays
Character[] TastenSpieler1 = { 'a', 's', 'd' };
combEinstellungenTastenBelegungSpieler1 = new JComboBox<Object>(TastenSpieler1);
combEinstellungenTastenBelegungSpieler1.setBounds(66, 220, 40, 23);
combEinstellungenTastenBelegungSpieler1.setFont(new Font("Tahoma", Font.PLAIN, 15));
combEinstellungenTastenBelegungSpieler1.setSelectedIndex(einstellungenTastenBelegungSpieler1Index);

Character[] TastenSpieler2 = { 'j', 'k', 'l' };
combEinstellungenTastenBelegungSpieler2 = new JComboBox<Object>(TastenSpieler2);
combEinstellungenTastenBelegungSpieler2.setBounds(209, 220, 40, 23);
combEinstellungenTastenBelegungSpieler2.setFont(new Font("Tahoma", Font.PLAIN, 15));
combEinstellungenTastenBelegungSpieler2.setSelectedIndex(einstellungenTastenBelegungSpieler2Index);

// JButton: Methodendeklaration und Methodenkonkretisierung (2 Button)
bEinstellungenSpeichern = new JButton("Speichern");
bEinstellungenSpeichern.setBounds(250, 400, 140, 50);
bEinstellungenSpeichern.addActionListener(new ActionHandler());

bEinstellungenZuMain = new JButton("Zum Hauptmenü");
bEinstellungenZuMain.setBounds(410, 400, 140, 50);
bEinstellungenZuMain.addActionListener(new ActionHandler());

// Einbindung der Methoden in die JPanel-Klasse
fEinstellungen.add(labEinstellungenUeberschrift);
pEinstellungen.add(labEinstellungenSpielUeberschrift);
pEinstellungen.add(labEinstellungenSpielAbc);
pEinstellungen.add(labEinstellungenSpielEinwohnerzahlen);
pEinstellungen.add(labEinstellungenSpielTicTacToe);
pEinstellungen.add(cbEinstellungenSpielAbc);
pEinstellungen.add(cbEinstellungenSpielEinwohnerzahlen);
pEinstellungen.add(cbEinstellungenSpielTicTacToe);
pEinstellungen.add(labEinstellungenSpieldauer);
pEinstellungen.add(labEinstellungenSpieldauerAktuell);
pEinstellungen.add(tfEinstellungenSpieldauer);
pEinstellungen.add(labEinstellungenTastenUeberschrift);
pEinstellungen.add(labEinstellungenTastenBelegung);
pEinstellungen.add(combEinstellungenTastenBelegungSpieler1);
pEinstellungen.add(combEinstellungenTastenBelegungSpieler2);

// Einbindung der Methoden in die JFrame-Klasse
fEinstellungen.add(pEinstellungen);
fEinstellungen.add(bEinstellungenSpeichern);
fEinstellungen.add(bEinstellungenZuMain);
fEinstellungen.add(labEinstellungenBild);
}

// Methode EinstellungenImport um Einstellungen aus externer Datei zu Importieren
public void EinstellungenImport() throws FileNotFoundException {
// Methodeninitialisierungen
fileEinstellungen = new File(getClass().getResource("Einstellungen.txt"));
Scanner einstellungenImport = new Scanner(fileEinstellungen);
// Laden der drei Boolean aus Datei und ändern der Einstellungen
if(einstellungenImport.hasNext()) {
einstellungenSpielAbcSpielen = einstellungenImport.nextBoolean();
einstellungenSpielEinwohnerzahlenSpielen = einstellungenImport.nextBoolean();
einstellungenSpielTicTacToeSpielen = einstellungenImport.nextBoolean();
einstellungenTastenBelegungSpieler1Index = einstellungenImport.nextInt();
einstellungenTastenBelegungSpieler2Index = einstellungenImport.nextInt();
einstellungenSpieldauer = einstellungenImport.nextInt();
if (einstellungenTastenBelegungSpieler1Index == 0) {
einstellungenTastenBelegungSpieler1 = 'a';
} else if (einstellungenTastenBelegungSpieler1Index == 1) {
einstellungenTastenBelegungSpieler1 = 's';
} else if (einstellungenTastenBelegungSpieler1Index == 2) {
einstellungenTastenBelegungSpieler1 = 'd';
}
if (einstellungenTastenBelegungSpieler2Index == 0) {
einstellungenTastenBelegungSpieler2 = 'j';
} else if (einstellungenTastenBelegungSpieler2Index == 1) {
einstellungenTastenBelegungSpieler2 = 'k';
} else if (einstellungenTastenBelegungSpieler2Index == 2) {
einstellungenTastenBelegungSpieler2 = 'l';
}
}
// Schließen der Einstellungsdatei
einstellungenImport.close();
}

// Methode EinstellungenExport um Einstellungen in externer Datei abzuspeichern
public void EinstellungenExport() {
fileEinstellungen = new File("C://test//einstellungen2spielerreaktor.txt");
fileEinstellungenFormatter = null;
try {
fileEinstellungenFormatter = new Formatter(fileEinstellungen);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
fileEinstellungenFormatter.format("%b", einstellungenSpielAbcSpielen);
fileEinstellungenFormatter.format(" %b", einstellungenSpielEinwohnerzahlenSpielen);
fileEinstellungenFormatter.format(" %b", einstellungenSpielTicTacToeSpielen);
fileEinstellungenFormatter.format(" %d", einstellungenTastenBelegungSpieler1Index);
fileEinstellungenFormatter.format(" %d", einstellungenTastenBelegungSpieler2Index);
fileEinstellungenFormatter.format(" %d", einstellungenSpieldauer);
fileEinstellungenFormatter.close();
}

// ActionListener
private class ActionHandler implements ActionListener {

@SuppressWarnings("static-access")
@Override
public void actionPerformed(ActionEvent e) {
// ActionListener für Button (Funktion: Speichern der Einstellungen)
if (e.getSource() == bEinstellungenSpeichern) {
// Ermittlung, ob das AbcSpiel gespielt werden soll
if (cbEinstellungenSpielAbc.isSelected() == true) {
einstellungenSpielAbcSpielen = true;
} else if (cbEinstellungenSpielAbc.isSelected() == false) {
einstellungenSpielAbcSpielen = false;
}
// Ermittlung, ob das EinwohnerzahlenSpiel gespielt werden soll
if (cbEinstellungenSpielEinwohnerzahlen.isSelected() == true) {
einstellungenSpielEinwohnerzahlenSpielen = true;
} else if (cbEinstellungenSpielEinwohnerzahlen.isSelected() == false) {
einstellungenSpielEinwohnerzahlenSpielen = false;
}
// Ermittlung, ob das TicTacToeSpiel gespielt werden soll
if (cbEinstellungenSpielTicTacToe.isSelected() == true) {
einstellungenSpielTicTacToeSpielen = true;
} else if (cbEinstellungenSpielTicTacToe.isSelected() == false) {
einstellungenSpielTicTacToeSpielen = false;
}
// Ermittlung der ggf. neuen Rundenzahl
einstellungenSpieldauer = Integer.valueOf(tfEinstellungenSpieldauer.getText());
labEinstellungenSpieldauerAktuell.setText("Aktuell: " + einstellungenSpieldauer);
// Ermittlung der bevorzugten Tastenbelegung für Spieler 1
einstellungenTastenBelegungSpieler1Index = combEinstellungenTastenBelegungSpieler1.getSelectedIndex();
if (einstellungenTastenBelegungSpieler1Index == 0) {
einstellungenTastenBelegungSpieler1 = 'a';
} else if (einstellungenTastenBelegungSpieler1Index == 1) {
einstellungenTastenBelegungSpieler1 = 's';
} else if (einstellungenTastenBelegungSpieler1Index == 2) {
einstellungenTastenBelegungSpieler1 = 'd';
}
// Ermittlung der bevorzugten Tastenbelegung für Spieler 2
einstellungenTastenBelegungSpieler2Index = combEinstellungenTastenBelegungSpieler2.getSelectedIndex();
if (einstellungenTastenBelegungSpieler2Index == 0) {
einstellungenTastenBelegungSpieler2 = 'j';
} else if (einstellungenTastenBelegungSpieler2Index == 1) {
einstellungenTastenBelegungSpieler2 = 'k';
} else if (einstellungenTastenBelegungSpieler2Index == 2) {
einstellungenTastenBelegungSpieler2 = 'l';
}
EinstellungenExport();
fEinstellungen.requestFocus();
}
// ActionListener für Button (Funktion: Zum Hauptmenü zurückkehren)
else if (e.getSource() == bEinstellungenZuMain) {
GUI.gui();
fEinstellungen.dispose();
}
}
}
}
[/code]
 

BlunatiX

Mitglied
@Kay73:
Ich hab das Ganze grad mal schnell auf einen InputStream umgeschrieben, bekomme aber den gleichen Fehler. Könntest du das vielleicht noch etwas genauer erklären?

@parallaxenfehle:
Werd ich gleich mal ausprobieren.
 

BlunatiX

Mitglied
@parallaxenfehle
Hab das jetzt versucht, wie du geschrieben hast, beim Einlesen funktioniert das auch prima! Allerdings komme ich beim Schreiben in die Datei nicht weiter. Benutze da ja einen Formatter. Hast du hier da vielleicht auch eine Klasse, die es möglich macht auch wieder in die test.txt zu schreiben?
 
@BlunatiX

Leider nein.

Aber eigentlich dürften wir der Lösung ziemlich nahe sein.
Schließlich brauchen wir "nur" einen Output Stream anstelle eines Input Streams.
Dennoch finde ich leider keinen Weg in die Datei zu schreiben.

mit einem Output Stream könnte man mit PrintWriter in die Datei schreiben ...
 
Hallo,

Ich hab mit Google noch was gefunden was dich interessieren könnte.

Java:
try {
	        FileOutputStream fos = new FileOutputStream("res/test.txt");
	        JarOutputStream jos = new JarOutputStream(fos);
	        jos.putNextEntry(new ZipEntry(" HALLO test 1 2 3 "));
	        String status = "";
	        jos.write(status.getBytes());
	        jos.flush();
	        jos.close();
	        fos.flush();
	        fos.close();
	    } catch (FileNotFoundException e) {
	        // TODO Auto-generated catch block
	        e.printStackTrace();
	    } catch (IOException e) {
	        // TODO Auto-generated catch block
	        e.printStackTrace();
	    }

damit kann man in die Datei schreiben.
Aber das Ergebnis ist nicht perfekt ... schwer zu beschreiben am besten du testest es.
Hoffentlich hilft dir das weiter.
Gruß p.
 

BlunatiX

Mitglied
Ja einfacher Text soll geschrieben werden, allerdings nicht in irgendeine externe Datei, sondern in eine Datei die sich in der .jar-Datei befindet.
 

BlunatiX

Mitglied
Ich hab nochmal ein wenig gesucht, auch im online verfügbaren Titel "Java ist auch eine Insel" und bin dort genau auf die Inputvariante gestoßen:
15.5.6 Ressourcen aus dem Klassenpfad und aus Jar?Archiven laden

Um Ressourcen wie Grafiken oder Konfigurationsdateien aus Jar-Archiven zu laden, ist die Methode getResourceAsStream() beziehungsweise getResource() ideal. Beide sind Methoden des Class-Objekts. getResource() gibt ein URL-Objekt für die Ressource zurück. Da oft der Inhalt des Datenstroms interessant ist, liefert getResourceAsStream() einen InputStream. Intern wird aber nichts anderes gemacht, als getResource() aufzurufen und mit openStream() ein Eingabe-Objekt zu holen. Nur getResourceAsStream() fängt eine eventuelle IOException ab und liefert dann die Rückgabe null.

Da der Klassenlader die Ressource findet, entdeckt er alle Dateien, die im Pfad des Klassenladers eingetragen sind. Das gilt auch für Jar-Archive, weil dort vom Klassenlader alles verfügbar ist. Konnte die Quelle nicht aufgelöst werden, liefern die Methoden null. Die Methode getResourceAsStream() liefert auch null, wenn die Sicherheitsrichtlinien das Lesen verbieten.
Beispiel

Besorge einen Eingabestrom in1 auf die Datei kullin_fun.txt und einen zweiten Eingabestrom in2 auf die Datei hirse_fun.jpg innerhalb der eigenen Methode init():

class Classi
{
InputStream in1 = Classi.class.getResourceAsStream( "kullin_fun.txt" );
void init()
{
InputStream in2 = getClass().getResourceAsStream( "hirse_fun.jpg" );
}
}

Da zum Nutzen der getResourceXXX()-Methoden ein Class-Objekt nötig ist, zeigt das Beispiel zum einen, dass über Classi.class das Class-Objekt zu bekommen ist, und zum anderen, dass in einer Objektmethode ebenfalls die geerbte Object-Methode getClass() ein Class-Objekt liefert.
Was ich suche ist exakt das, bloß umgekehr. Also, dass ich in die Datei in meinem Jar-Archiv schreiben kann.
Alles was ich schreiben möchte sind 3 Boolean und 3 Zahlen (um Einstellungen abzuspeichern).
 

BlunatiX

Mitglied
Nach mehr Recherche habe ich herausgefunden, dass das Schreiben in eine Datei im Classpath wohl kaum bis garnicht, aber auf jeden Fall nicht für mich, möglich ist.
Falls jemand doch eine Lösung hat, die "einsteigerfreundlich" ist, kann er mich gerne PMen!
Ansonsten werde ich es über eine externe Datei (z.B. in den Eigenen Dokumenten) lösen.
Dann wäre das soweit "erledigt"^^
 
Hallo,

ich habe ein Programm geschrieben mit dem ich in eclipse in einen Ordner des Projekts Daten schreiben und Lesen kann.

Leider funktioniert das schreiben nur in eclipse. Wenn man das Projekt exportiert funktioniert nur noch das lesen.

ich nutze win8 64bit und Java7.

In eclipse muss man damit es funktioniert nach jedem ausführen das Projekt mit F5 aktualisieren.

Hat jemand eine Idee woran das liegen könnte?

Java:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;

import javax.swing.JOptionPane;


public class Hallo {


	public static void main(String[] args) {
		
		String ausgabe = "";
		InputStream ip = ResLoder.load("test.txt");
		if(ip != null) {
			Scanner sc = new Scanner(ResLoder.load("test.txt"));
			while(sc.hasNext()) {
				ausgabe = sc.next();
				if(ausgabe.equals("START")) {
					ausgabe = "";
					break;
				}
			}
			String puffer = "";
			while(sc.hasNext()) { 
				puffer = sc.next();
				if(puffer.equals("ENDE")) {
					break;
				}
				if(ausgabe.equals("")) {
					ausgabe = ausgabe + puffer;
				} else {
					ausgabe = ausgabe + " " + puffer;
				}
				System.out.println(puffer);
			}
			sc.close();
		}
		
		String inhalt = (String) JOptionPane.showInputDialog(null, "AUSGABE/EINGABE",
				"AUSGABE/EINGABE:", JOptionPane.PLAIN_MESSAGE, null, null, ausgabe);

		try {            
			FileOutputStream fos = new FileOutputStream("res/test.txt");            
			JarOutputStream jos = new JarOutputStream(fos); 
			jos.putNextEntry(new ZipEntry(" START " + inhalt + " ENDE "));                    
			jos.flush();            
			jos.close();            
			fos.flush();            
			fos.close();        
		} catch (FileNotFoundException e) {            
			// TODO Auto-generated catch block            
			e.printStackTrace();        
		} catch (IOException e) {           
			// TODO Auto-generated catch block           
			e.printStackTrace();        
		}
	}

}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
L Input/Output Datei in Java einlesen Java Basics - Anfänger-Themen 9
S .txt-Datei in Java einlesen Java Basics - Anfänger-Themen 6
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
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
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
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
Kotelettklopfer Sqlite DB aus Java Datei ansprechen. Java Basics - Anfänger-Themen 147
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
S Verbindung von einer Excel Datei zu Java-- Java Basics - Anfänger-Themen 4
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
J Java Datei als exe weitergeben Java Basics - Anfänger-Themen 3
A .txt-Datei mit Java speichern Java Basics - Anfänger-Themen 2
M Java Mysql ausführbare datei Java Basics - Anfänger-Themen 7
alkaA Intellij Java Datei aus nicht Projekt ausführen? Java Basics - Anfänger-Themen 2
L Wie kann man fehlerfrei im Java Code auf die fxml Datei zugreifen? Java Basics - Anfänger-Themen 26
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
diqqerrr Java Datei als .exe ausführen Java Basics - Anfänger-Themen 8
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
M Java Programm über Batch-Datei ausführen Java Basics - Anfänger-Themen 1
A Java-Datei refaktorieren Java Basics - Anfänger-Themen 3
M In einer Datei schreiben - Java Java Basics - Anfänger-Themen 3
O Javac findet die .java datei nicht Java Basics - Anfänger-Themen 2
F PDF Datei in Java einbinden Java Basics - Anfänger-Themen 22
S .java Datei in java Datei ausführen Java Basics - Anfänger-Themen 9
J Java Datei lässt sich nicht kompilieren Java Basics - Anfänger-Themen 3
J Java - Abspielen einer wav Datei Java Basics - Anfänger-Themen 2
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
I Klassen Mehrere Java Klassen in einer .java Datei Java Basics - Anfänger-Themen 7
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
J Eingabeaufforderung stürzt ab (beim Ausführen einer Java-Datei) Java Basics - Anfänger-Themen 3
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
G Input/Output CSV-Datei über Java-Programm erstellen, Zeichensalat Java Basics - Anfänger-Themen 3
Z Java txt Datei erstellen lassen Java Basics - Anfänger-Themen 6
0 Über CMD die JAVA Datei ausführen? möglich? Java Basics - Anfänger-Themen 8
M Java Datei soll sich selbst löschen Java Basics - Anfänger-Themen 8
M Datei starten mit Java Java Basics - Anfänger-Themen 3
D java Datei ausführen? Java Basics - Anfänger-Themen 4
Fab1 alte Java Datei wird ausgeführt (trotz Änderung) Java Basics - Anfänger-Themen 4
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
S .jar/java Datei ausführen Windows 7 64bit?! Java Basics - Anfänger-Themen 7
E Java Datei erstellen? :) Java Basics - Anfänger-Themen 3
U Java datei ausführen[Fehler] Java Basics - Anfänger-Themen 5
M Datei in java Öffnen Java Basics - Anfänger-Themen 9
P .class Datei direkt starten (optional Java Datei direkt starten) Java Basics - Anfänger-Themen 13
P Java Datei ohne Netbeans ausführen Java Basics - Anfänger-Themen 7
U neue Java-Datei öffnen Java Basics - Anfänger-Themen 10
S JTabbedPane jeder Tab in einer eigenen java Datei? Java Basics - Anfänger-Themen 3
A CMD findet die java.class Datei nicht Java Basics - Anfänger-Themen 46
Maxim6394 Java Datei ausführen Java Basics - Anfänger-Themen 9
D Input/Output Zeilen aus txt-datei in Java-Liste einfügen Java Basics - Anfänger-Themen 9
H java datei ausführen funktioniert nicht Java Basics - Anfänger-Themen 7
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
E PHP Datei mittels Java aufrufen? Java Basics - Anfänger-Themen 3
K Klasse in eingener *.java-Datei Java Basics - Anfänger-Themen 5
A Wie mit Java eine .vbs Datei starten lassen? Java Basics - Anfänger-Themen 4
D Java Applet in einer .jar datei Java Basics - Anfänger-Themen 2
U Java .txt datei öffnen Java Basics - Anfänger-Themen 3
achillesat aus .java in ascii datei Java Basics - Anfänger-Themen 12
H java programm per batch datei öffnen Java Basics - Anfänger-Themen 4
K OOP Macro (.vba-Datei) aus Java Java Basics - Anfänger-Themen 2
C Datei kopieren - Erweiterung java.io.File Java Basics - Anfänger-Themen 2
A Java Datei in Applet umwandeln Java Basics - Anfänger-Themen 4
C *.java Datei nach Doppelklick mit VM ausführen Java Basics - Anfänger-Themen 29
Jats Java-Datei mit unbestimmten Variablen Java Basics - Anfänger-Themen 29
3 Eine HTML Datei in eine Java Datei umschreiben Java Basics - Anfänger-Themen 23
W [Java Archive (JAR) Datei erstellen] Lässt sich nicht ausfürhren Java Basics - Anfänger-Themen 7
M java neue datei erstellen Java Basics - Anfänger-Themen 6
P mit java text-datei auslesen und weiter bearbeiten Java Basics - Anfänger-Themen 3
Developer_X Datei downloaden mit Java (.zip) Java Basics - Anfänger-Themen 19
M lokale exe-Datei über Java-Applet starten Java Basics - Anfänger-Themen 4
L Datei aus Java in anderem Programm öffnen Java Basics - Anfänger-Themen 23
N Java Programm soll Datei in eigene jar schreiben Java Basics - Anfänger-Themen 13
X Java txt datei auslesen Java Basics - Anfänger-Themen 10
T Java Webstart soll eine Datei speichern Java Basics - Anfänger-Themen 2
Knizz Java-Datei über cmd öffnen Java Basics - Anfänger-Themen 29
M Datei mit Java für Programm öffnen Java Basics - Anfänger-Themen 10
B Java Datei unter Solaris kompilieren Java Basics - Anfänger-Themen 2
Developer_X Java File listet den Ordner, in dem sich die Datei befindet Java Basics - Anfänger-Themen 7
Developer_X HTML Datei nicht von Java Lesbar Java Basics - Anfänger-Themen 8
H Große Projekte mit Java - Ausführbare Datei Java Basics - Anfänger-Themen 2
M Delphi-Record mit Java aus Datei lesen Java Basics - Anfänger-Themen 11
E Habe java. Datei wie ausführen ? Java Basics - Anfänger-Themen 9
2 Mit Java in eine WORD-Datei schreiben Java Basics - Anfänger-Themen 18
M .java als ausführende Datei Java Basics - Anfänger-Themen 2
Q java.util.loggging neue datei erstellen Java Basics - Anfänger-Themen 3
G *.java Datei mit Editor starten und testen Java Basics - Anfänger-Themen 6
K Java Application mit Batch-datei starten Java Basics - Anfänger-Themen 9
O Text von Homepage via Java auslesen und in Text Datei speich Java Basics - Anfänger-Themen 1
G Datei mit Java anlegen Java Basics - Anfänger-Themen 9
J Ein Java-Programm in eine *.exe Datei 'packen' Java Basics - Anfänger-Themen 20
S Datei mit Java-Applikation an Web-Formular schicken Java Basics - Anfänger-Themen 9
G Datei in Java umbenennen Java Basics - Anfänger-Themen 4
K Wieviele Befehle pro .java Datei Java Basics - Anfänger-Themen 4
K aus Java Programme Jar.datei erstellen (eclipse) Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben