Writer/Reader Problem

  • Themenstarter Themenstarter Tonic
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Tonic

Gast
Hi,
ich will ein Programm schreiben, das eine Datei ausliest und es ermöglicht diese an bestimmten Stellen zu editieren.
Ich hab damit aber verschiedene Probleme. Einmal ist das Problem, das wenn ich sowohl den FileReader als auch den FileWriter in einer einzigen Klasse auf eine Datei verweise, funktioniert das schreiben nicht. Zum anderen brauche ich eine Möglichkeit an einer bestimmten Stelle eine Zeile zu editieren.
Mein bisheriger Code sieht ziemlich schlimm aus, aber die beiden oberen Sachen sind meine Hauptprobleme.
Mit anderen Möglichkeiten wie die Frage zu editieren hab ich nochnicht angefangen, aber das läuft dann ja im Prinzip genau gleich ab.

Die Datei auf die ich verweise beginnt sieht so aus:
Frage1
Welches Land heißt übersetzt 'Dorf'?
a)Mexico b)Kanada c)Iran ?
b

usw
Code:
import java.io.*;

class test
{

  public static void main ( String[] args ) throws IOException
  {
	  LineNumberReader zeilennummer;
	  String zeile;
	
	  
	  
	  //aktuelle Datei ausgeben
	  System.out.println("So sieht die Datei im Moment aus:");		
	  try {
	        zeilennummer = new LineNumberReader(
	            new FileReader("Fragen.txt"));
	        while ((zeile = zeilennummer.readLine()) != null) 
	        {
	           System.out.print(zeilennummer.getLineNumber() + ": ");
	           System.out.println(zeile);
	           
	        }

	        System.out.println("");
	        System.out.println("Was wollen sie bearbeiten?(a=Frage b=Antwortmöglichkeiten c=Antwort)");
	           BufferedWriter writer= new BufferedWriter(new FileWriter("Fragen2.txt",true));
	           String bearbeiten2 = Einlesen.readString();
	           String bearbeiten =bearbeiten2.toLowerCase();
	           
	           
	           if (bearbeiten.equals("a"))
	           {
	           	System.out.println("Welche Frage wollen sie bearbeiten? (bitte zb Frage1 eingeben)");
	           	String frage = Einlesen.readString();
	           	
	           	
	           	
	           	
	           	String thisLine;
	            try {
	                BufferedReader in = new BufferedReader (
	                              new FileReader ("Fragen.txt"));
	                try {
	                    while( (thisLine = in.readLine()) != null ) 
	                    {
	                        if (thisLine.equals(frage))
	                        {
	                        	System.out.println("Wie soll die neue Frage heißen?");
	                        	String frageneingabe =Einlesen.readString();
	                        	//hier muss dann irgendwas hin damit ich die Zeilen editieren kann
	                        }
	                    }
	                    in.close();
	                } catch (IOException e) {
	                    System.out.println("Read error " + e);
	                }
	            } 
	            catch (IOException e) {
	                System.out.println("Open error " + e);
	            }
	    		
	           	
	           	}
	
	           writer.close();
	        
	        zeilennummer.close();
	     } catch (IOException e) {
	        System.out.println("Fehler beim Lesen der Datei");
	        
	      
	           
	           
	     }
	     }
	
  }
 
Trenn mal Eingabe, Verarbeitung und Ausgabe. Dann gehts um einiges leichter. Die wesentlichen Sachen sidn nämlich schon verhanden und scheinen mir auch richtig.

Zur Info eine geöffnete Datei kannst du ja nicht nochmal öffen. Also immer schöndatei öffnen, daten einlesen, datei schließen, daten bearbeiten, datei öffnen, daten schreiben, datei schließen
 
Danke schonmal. Meinst du in eigene Klassen unterteilen?
Problem ist immernoch, das ich nicht weiß wie ichs dann hinbekommen soll das ers an entsprechender stelle einfügt und nicht einfach alles überschreibt.
 
Wenn du 6 Punkte für die Übung willst solltest du für den Reader und den Writer ne eigene Klasse schreiben und die dann an der richtigen Stelle aufrufen. Zumindest hat sie mir das so gesagt :lol: :wink:
 
Wenn du 6 Punkte für die Übung willst solltest du für den Reader und den Writer ne eigene Klasse schreiben und die dann an der richtigen Stelle aufrufen. Zumindest hat sie mir das so gesagt
:lol: Na, nicht der einzige aus dem Fach/Kurs, der Hilfe in dem Forum sucht? :lol: :bae:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben