An eine ausgewählte Stelle in der Datei schreiben?

Status
Nicht offen für weitere Antworten.

Der_Türke

Mitglied
Hallo Leute

und hier mal noch ne Frage für heute. Ich habe eine .stats Datei die mehrere Spalten und Zeilen erhält! ich kriege auch die stelle die ich überschreiben will per .spilt() undsoweiter aber wie schreibe ich den jetzt genau da hin in der Datei?


Code:
try {
        	
        	
        	File file= new File("D:/server/htdocs/playground/ticketchart/statshistory.stat");
    		BufferedReader in = new BufferedReader(new FileReader(file));
    		String zeile = null;
    		String[]text=null;
    		
    		 Vector<String> penCount = new Vector<String>();
    		while ((zeile = in.readLine()) != null) {
    			
    		text=zeile.split("\t");		
    		   			
    			//System.out.println(text[1]);
    			penCount.add(text[1]);
    			
    		}
    		System.out.println(penCount.elementAt(penCount.size()-2)); // stelle die ich überschreiben will
    		
    	} catch (IOException e) {
    		e.printStackTrace();


Gruß an Alle
 
du fügst den neuen Text als String in deinen Vector an richtiger Stelle ein
und dann schreibst du alle Strings wieder in die (neue) Datei

wenn du nur überschreiben willst ohne die Dateilänge zu ändern, dann gibt es RandomAccesFile
 
Code:
try {
        	
        	
        	File file= new File("D:/server/htdocs/playground/ticketchart/statshistory.stat");
        	RandomAccessFile raf = new RandomAccessFile(file, "rw");
    		
        	String zeile = null;
    		String[]text=null;
    		 //Vector<String> doneCount = new Vector<String>();
    		 Vector<String> penCount = new Vector<String>();
    		while ((zeile = raf.readLine()) != null) {
    			
    		text=zeile.split("\t");		
    		   			
    			//System.out.println(text[1]+" "+text[2]);
    			penCount.add(text[1]);
    			//doneCount.add(text[2]);
    			
    		}
    		
    		
    		//System.out.println(penCount.elementAt(penCount.size()-2)); an diese stelle will ich schreiben
    		
    	} catch (IOException e) {
    		e.printStackTrace();
        
        
        
	}


kann mir vlt jemadn ein tipp geben wie ich das anstellen soll?
ich möchte ja nur eine stelle im text überschrieben und das geht irgenwie nicht
 
OK ich bin schon mal soweit das ich meine daten auslesen kann kriege aber mit getLast() nur den letzten ich brauche aber den vorletzten wert wie geht das???


und wie schreibe ich dann nachher in meine datei rein wenn ich diesen vorletzten wert gändert habe???

Code:
try {
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(
        		    new FileInputStream(new File("D:/server/htdocs/playground/ticketchart/statshistory.stat"))));
        	
        	String zeile;
    		LinkedList<String[]> zeileliste= new LinkedList();
    		while ((zeile = br.readLine()) != null) 
    		{
    			
    			zeileliste.add(zeile.split("\t"));		
    		     		
    		}
    		System.out.println((zeileliste.getLast()[1]));


Gurß
 
get(size()-2)

> und wie schreibe ich dann nachher in meine datei rein

na so wie man ganz normal eine Datei schreibt, wenn dir das noch unbekannt ist,
dann lerne das besser erstmal unabhängig von diesem komplizierten Problem
 
genau wie du sagst komplizierter fall ich kann schon in eine datei schreiben aber wie geht das in meinem fall wenn ich eine linkedlist habe??? ich möchte den Inhalt den ich aus der linkedliste habe also beim system.out... mit einer zahl überschreiben! wie genau geht das?


Code:
 try {
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(
        		    new FileInputStream(new File("D:/server/htdocs/playground/ticketchart/statshistory.stat"))));
        	
        	BufferedWriter out = new BufferedWriter(new FileWriter("D:/server/htdocs/playground/ticketchart/statshistory.stat"));
        	
        	String zeile;
    		LinkedList<String[]> zeileliste= new LinkedList();
    		while ((zeile = br.readLine()) != null) 
    		{
    			
    			zeileliste.add(zeile.split("\t"));		
    		     		
    		}
    		System.out.println((zeileliste.get(zeileliste.size()-2)[1]));
    	
    	        out.write(???);
        	out.close();
 
Hallo Leute also mein neuer Stand sieht so aus! Ic hab es geschaft den Inhalt meiner Datei in eine andere Datei zu kopieren. Jetzt möchte ich aber an der stelle im Code wo out.append steht = das ist nämlich die position in meiner datei die ich ändern möchte und nicht einfach nach meinem datensatz am ende anhängen wie geht das?

Die Frage ist wie ändere ich den Inhalt einer bestimmten Position?

Code:
 try {
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(
        		    new FileInputStream(new File("D:/server/htdocs/playground/ticketchart/statshistory.stat"))));
        	
        	BufferedWriter out = new BufferedWriter(new FileWriter("D:/server/htdocs/playground/ticketchart/statshistory1.stat"));
        	
        	
        	int zahl=10;
        	String zeile;
    		LinkedList<String[]> zeileliste= new LinkedList();
    		while ((zeile = br.readLine()) != null) 
    		{
    			
    			zeileliste.add(zeile.split("\t"));	
    			out.write(zeile);
    			
    			out.newLine();
    		     		
    		}
    		//out.append((zeileliste.get(zeileliste.size()-2)[1]));
    		
    		
      	

        
      	
        
        out.flush();
      	out.close();
    	} 
        
        
        catch (IOException e) {
    		e.printStackTrace();
    		
        
        
	}


Gruß Der Türke
 
> Jetzt möchte ich aber an der stelle im Code wo out.append steht = das ist nämlich die position in meiner datei die ich ändern möchte und nicht einfach nach meinem datensatz am ende anhängen wie geht das?

dieser Satz macht auf Deutsch und inhaltlich keinen Sinn,
überlege doch noch mal was du willst und teile das bitte mit,

ich lese da heraus, dass die Code-Zeile mit 'out.append' eine besondere Stelle ist, aber eigentlich ist das erst das Ende der Datei

ich schlage immer noch vor: erst alles in die Liste einlesen,
dann die Liste beliebig verändern und dann alles wieder rausschreiben,

wenn du in der Einlesen-while-Schleife gleich wieder etwas schreibst,
dann brauchst du die Liste der Zeilen doch gar nicht
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben