Ans Ende einer txt Datei schreiben

Status
Nicht offen für weitere Antworten.

Der Seppl

Mitglied
Hi!

Wie kann ich ans Ende einer txt-Datei, die bereits existiert und Daten beinhaltet, schreiben?

In der txt steht z.B.

Code:
text1
text2
text3

und ich würde gern jeweils Daten nach der letzten zeile schreiben. Bisher wird der Inhalt meiner Datei immer wieder überschrieben.

Umgekehrt möchte ich jeweils nur die letzte Zeile wieder einlesen, wie schaffe ich das?

Danke im Voraus!
der Seppl
 

The_S

Top Contributor
Du kannst deinem FileWriter/FileOutputStream neben der Zieldatei noch einen boolean mitgeben. Dieser legt fest, ob angehängt, oder überschrieben werden soll.
 

Der Seppl

Mitglied
Oh, das war ja einfach, danke :)

Aber wie funktioniert es "umgekehrt", also dass ich beim einlesen nur die letzte Zeile erhalte bzw. die letzte Zeile von den anderen unterscheiden kann?

Danke!
 

The_S

Top Contributor
Du musst bis zur letzten Zeile alles einlesen. Dateien sind sequentiell aufgebaut, d. h. du kannst nicht einfach vom Ende oder mittendrin anfangen zu lesen.
 

Der Seppl

Mitglied
Und welche Möglichkeit gibt es dann, die Zeilen voneinander zu unterscheiden?

Ich mein, wenn ich laufend in die Datei reinschreibe (unterschiedl. Werte), woher weiss ich dann welcher Wert der letzte ist?
 

MiMij

Bekanntes Mitglied
Du kannst Zeile fuer Zeile die Textdatei einlesen, und wenn nach der aktuellen Zeile keine mehr kommt, ist doch klar das du dann bei der letzten bist :D
 

MASTERmind

Bekanntes Mitglied
Wichtig ist vor allem, dass Du ein Muster in den Datei Inhalten erkennst und dieses dann benutzt für die Dinge, die Du anstellen willst.
Du könntest den Inhalt der Datei auch in eine HashMap stopfen zum Beispiel

Code:
Map<Integer,String> myMap = new HashMap<Integer,String>();

Dann hast Du zu jeder Zeile einen Index und kannst zum Beispiel, falls gewünscht, doppelte Zeilen in Deiner Datenmenge myMap ausschliessen mit

Code:
if(!myMap.contains(zeile))
{
  myMap.add(zeile);
}

myMap kannst Du dann mit einem FileWriter wieder in die Datei schreiben....
 

Shadeo

Mitglied
Eine HashMap hat keine Methode add(), sondern put(), wo du Key und Value angeben musst. Funktioniert natürlich auch, dazu musst du aber die Zeilen selber zählen lassen. Auf doppelte Einträge prüfen könntest du dann mit containsValue()

--> ArrayList wäre wohl besser, dann musst du die Zeilennummer nicht manuell mitzählen
 

Der Seppl

Mitglied
Hab es jetzt etwas anders gelöst, trotzdem danke für eure Hilfe!

Habe aber noch ein Problem... und zwar schreibe ich in die txt-Datei eine Zahl und danach ein Datum.
Beim Einlesen zerlege ich diese Strings um nur die Zahl zu erhalten.

Führe ich das ganze als Java Anwendung aus, funktioniert es. Aber so bald ich die Klasse als JavaBean in eine jsp einbinden will, erhalte ich eine "NumberFormatException" für den String "null". Bedeutet ja im Umkehrschluss, dass der Wert, den er aus der Datei liest null ist.

Aber warum funktioniert es einwandfrei, wenn es als reine java anwendung ausgeführt wird und sonst nicht?
Habt ihr dazu eine Idee?

danke für eure Hilfe!
 
S

SlaterB

Gast
blind geraten: die JSP wird von woanders ausgeführt und findet daher den relativen Pfad nicht,

für richte Erklärung: Code+ Umgebung posten (was bei JSPs nicht gerade trivial ist)/
selber suchen: Datei anschauen: wird sie gefunden?, ist die Dateigröße gleich?, welche Strings werden zeilenweise eingelesen ohne gleich zerlegen/ parsen zu wollen?,
mit einfacherer Datei nur mit einem Buchstaben x testen
 

Der Seppl

Mitglied
Also zur Umgebung: arbeite mit Tomcat und Easy Eclipse.

JSP Seite bindet nur als JavaBean ein, die betroffende Methode wird innerhalb der Klasse aufgerufen:

Code:
idManager idMan = new idManager();

public String getid() {

		int new_id = idMan.getID();

		idMan.setID(String.valueOf(new_id), getName());

		return new_id;
}

Hier aufgerufen werden diese Methoden:

getID() liefert die letzte ID, die in der Textdatei steht:
Code:
	public Integer getID(){
		try{
			String zeile = "";
			java.io.BufferedReader versionReader  = new java.io.BufferedReader(new java.io.FileReader("version.txt"));
			java.util.ArrayList<String> Ids = new java.util.ArrayList<String>();

			while((zeile = versionReader.readLine()) != null ) {

			    String[] result = zeile.split("     ");
			    for(int x = 0; x < result.length; x++)
			    	Ids.add((result[x]));
			}
			versionReader.close();

			int anzahlIds = Ids.size();
			if(!Ids.get(anzahlIds - 1).equals("null") || Ids.get(anzahlIds - 1) != null){
				zeile = Ids.get(anzahlIds - 2);
			}else{
				zeile = Ids.get(anzahlIds - 4);
			}
			System.out.println(String.valueOf(Integer.parseInt(zeile) + 1));

			return Integer.parseInt(zeile) + 1;

		}catch (IOException e) {
			// Fehlerbehandlung
		}
		return 0;

	}

setID(id, name) schreibt in die txt Datei die neueste ID, das Datum und ein Name
Code:
	public void setID(String newID, String catalog_name){

		try{

			java.io.FileWriter versionWriter  = new java.io.FileWriter("version.txt", true);

			SimpleDateFormat formatter = new SimpleDateFormat ("dd.MM.yyyy - HH:mm:ss");
			java.util.Date date = new java.util.Date();


			versionWriter.write(System.getProperty("line.separator") + newID + "     " + formatter.format(date) + " " + catalog_name);
			versionWriter.flush();
			versionWriter.close();

		}catch (IOException e) {
			// Fehlerbehandlung
		}
	}

Die Textdatei ist wie folgt aufgebaut:
Code:
// Diese Textdatei dient zum Speichern der Katalog-IDs
1     04.01.2008 - 15:13:14 der Seppl

Wie gesagt, zur JSP gibt es nicht viel zu schreiben, da sie die Bean einbindet und eine Methode aufruft. Diese Methode wiederrum ruft die getid() auf.

Danke für die Hilfe.
 

Der Seppl

Mitglied
Hallo!

Habe den Fehler gefunden, verstehe ihn aber nicht so ganz.
Hab durch ein paar Ausgaben auf der Konsole rausgefunden, dass JBoss auf eine andere Datei zugreift als die Java Klasse.
Wenn ich die Klasse alsAnwendung ausführe wird die txt-Datei aus meinem Projektordner zum Lesen / Schreiben verwendet.
Binde ich die Klasse als JavaBean ein, wird eine txt-Datei im JBoss bin-Ordner verwendet... aber warum?

Ich wollte ja eigentlich, dass die txt-Datei immer beim Projekt dabei ist und nicht einfach im JBoss Ordner neu erstellt wird...

...woran kann das liegen?

der Seppl
 

The_S

Top Contributor
Weil ein relativer Pfad immer dort beginnt, von wo aus die Klasse aufgerufen wird. Und nicht etwa von dort aus, wo die Klasse liegt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Text ans Ende einer Textdatei anfügen Allgemeine Java-Themen 2
Robertop BigDecimal ergänzt unnötige 0 am Ende Allgemeine Java-Themen 6
Joker4632 Klassen Buffered Reader liest die Leerzeichen am Zeilen Ende nicht mehr Allgemeine Java-Themen 2
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
OnDemand String splitten (mit Anfang und Ende) Allgemeine Java-Themen 11
A Datentypen Long.valueOf liefert kein "L" am Ende Allgemeine Java-Themen 3
M String shuffeln, Anfang und Ende aber bleiben gleich Allgemeine Java-Themen 15
M Methoden Methode führt Ende vor dem Anfang aus Allgemeine Java-Themen 7
S Threads Ende sämtlicher Threads abwarten Allgemeine Java-Themen 6
T Problem mit gzip Stream und Ende der Datei Allgemeine Java-Themen 2
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
M itext Leerzeichen am ende unterstreichen Allgemeine Java-Themen 4
O Wie kann ich das Ende eines Threads melden? Allgemeine Java-Themen 7
F externes Programm beginnt erst nach dem ende des mainprogrammes Allgemeine Java-Themen 3
D Java Thread, Bild wird nur am Ende gezeichnet Allgemeine Java-Themen 5
L Warten bei mehreren Threads, bis Ende erreicht ist Allgemeine Java-Themen 2
J Listener für Ende eines Threads gesucht... Allgemeine Java-Themen 5
E beim Ende der main() das Programm nicht beenden Allgemeine Java-Themen 3
R RandomAccessFile springt zum Ende Allgemeine Java-Themen 11
K Scanner.hasNext findet kein Ende Allgemeine Java-Themen 6
B ObjectInputStream - Wann ist Ende erreicht? Allgemeine Java-Themen 10
S MediaTracker nutzen um festzustellen ob schreibvorgang ende. Allgemeine Java-Themen 5
D das Ende eines Threads Allgemeine Java-Themen 2
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Wie kann ich den Wert aus einer If abfrage ausgeben Allgemeine Java-Themen 23
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
D Abbruch einer ViewScoped Bean in Arbeit Allgemeine Java-Themen 2
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
Lukas2904 Wie kann man cps (ClicksPerSecond) in einer GUI anzeigen lassen? Allgemeine Java-Themen 4
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
N BlueJ Implementation einer Analoguhr Allgemeine Java-Themen 0
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
MiMa Prüfziffer einer EAN Nummer berechnen Allgemeine Java-Themen 4
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
Scream_ilias Auf einer Website die anmeldedaten eingeben Allgemeine Java-Themen 9
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
J Suchen von einer Scannereingabe in einem HashSet Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
L Echtzeitdaten aus einer Webseite ziehen mit Java Allgemeine Java-Themen 19
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
T Google Links in einer Liste Allgemeine Java-Themen 4
T Sinn einer toString Methode Allgemeine Java-Themen 3
P Durchlaufen einer Queue Allgemeine Java-Themen 9
J Größe einer CD ermitteln Allgemeine Java-Themen 10
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
H Länge einer verketteten Liste Allgemeine Java-Themen 4
B Quellcode einer Java libary finden um zu copy & paste'n Allgemeine Java-Themen 5
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben