Anfänger: Txt-Datei editieren

Maddili

Mitglied
Hi liebe Community,

ich hänge an folgendem Problem:

Ich möchte eine Textdatei einlesen, diese editieren und wieder abspeichern. (Evtl auch unter einem anderem Dateinamen)

zum verdeutlichen:

Datei: abc.txt (z.B. unter C:\)

Die datei enthält folgenden Text:

***************
a
a
a
b
b
b
c
c
c
***************

Jetz möchte ich z.B. vor dem ersten "c" einen Text einfügen. z.B.:

***************
a
a
a
b
b
b
Ich hasse Java!
c
c
c
***************

Jetz mal mein Gedankengut, wie ich mir das vorgestellt habe:
1. Die Datei mit nem FileReader einlesen (Soll später noch erweitert werden, dass ich über ne GUI die Datei auswählen kann. Ist aber atm noch nicht erforderlich)
2. Mit einem BufferedReader readline() zeilenweise den Text der Datei einlesen
3. Den Inhalt mit StringBuffer speichern (readline() bis null -> StringBuffer append)
4. Und dann

Hier habe ich viel Zeug nachgelesen bzw. auch ausprobiert. Allerdings komme ich nicht zu meinem gewünschten Ergebnis. Entweder wird der Text überschrieben, bis zu c gelöscht, der "ich hasse Java"-String in nem Loop bis ins unendliche geschrieben usw.

Also ich wäre für jede Hilfe / Anregung dankbar, wie ich Schritt 4., 5., und evtl 6.,7.,... abgehen kann.

Danke
Maddin
 
Hmpf, habs selbst hinbekommen. War nicht wirklich schwer (hat aber laaaaaange gedauert...)

Wens interessiert, hier mein Code:

Code:
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		
		try {
			
			File testFile = new File("D:/abc2.txt");
			FileWriter fw = new FileWriter(testFile);
			BufferedWriter br = new BufferedWriter(fw);
			
			
			BufferedReader in = new BufferedReader(new FileReader("D:/abc.txt"));
			String zeile = null;
			String s2="c";
			while ((zeile = in.readLine()) != null) {
				System.out.println("Gelesene Zeile: " + zeile); // Test in der Console
				br.write(zeile);
				br.newLine();
				
				if(zeile.equals(s2)){
					System.out.println("hmmm, wusst ichs doch"); // Test in der Console
					br.write("hahahahahhaha");
					br.newLine();

				}
			}
			br.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

Bitte den Thread vorerst nicht schliessen. Da ich versuche das ganze in ne GUI einzubinden... ..und da werden bestimmt noch Fragen kommen!! ;)

mfg
Maddin
 
Du würdest es dir leichter machen wenn du die Zeilen erstmal in eine Collection speicherst.

Dann kannst du später jederzeit Zeilen ändern, einfügen oder entfernen:

Java:
	    	String path = "C:/test1.txt";
	    	BufferedReader in = new BufferedReader(new FileReader(path));
	    	List<String> content = new ArrayList<String>();
	    	String zeile = null;
	    	while ((zeile = in.readLine()) != null) {
	    		content.add(zeile);
	    	}
	        //vor dem schreiben den lese stream schließen!
	    	in.close();

	    	// index der ersten Zeile "c"
	    	int firstCLineNumber = content.indexOf("c");
	    	
	    	//einfügen
	    	content.add(firstCLineNumber, "hahahaha");

	    	
	    	File testFile = new File(path);
			FileWriter fw = new FileWriter(testFile);
			BufferedWriter br = new BufferedWriter(fw);
	    	for(String s : content){
	    		br.write(s);
	    		br.newLine();
	    	}
	    	br.close();
 
Zurück