Zeile um zeichen erweitern

hallo zusammen ,

ich habe einen text mit zum beispiel 25 Zeilen und immer maximal 24 Zeichen pro Zeile oder weniger.

ich möchte jetzt an Zeile 13 die nur 16 Zeichen diese Zeile auf 17 Zeichen erweitern .

das klappt leider nicht denn es wird immer aus Zeile 14 ein Zeichen in Zeile 13 gezogen.

beispiel:

Zeile 13 ABCDEFG
Zeile 14 ABCDEFGHI

ausehen soll es richtig so

Zeile 13 ABCDEFGH
Zeile 14 ABCDEFGHI

bei mir kommt dann das herraus

ZEILE 13 ABCDEFGH A
ZEILE 14 BCDEFGHI

was mache ich da falsch ???

Java:
raf.seek(long_Summe);

if (str_neu_Summe.length() == 8) {
                            str_Ein_Summe_neu = str_zeile_kom.replace(str_zeile_kom.substring(8, 17), " " + str_neu_Summe);
                        }

                        raf.writeBytes( str_Ein_Summe_neu + " EU");
 
Hallo, insofern kein Zeichen als letztes Zeichen eingefügt werden soll geht das:
Java:
public static void a(File f, int row, int col, char c) throws IOException {
	RandomAccessFile af = new RandomAccessFile(f, "rw");
	while (row > 0) {
		af.readLine();
		row--;
	}
	while (col > 0) {
		af.read();
		col--;
	}
	int x = af.read();
	af.seek(af.getFilePointer() - 1);
	af.write(c);
	int y;
	while ((y = af.read()) != -1) {
		af.seek(af.getFilePointer() - 1);
		af.write(x);
		x = y;
	}
	af.write(x);
	af.close();
}
 
Guten Morgen ,
danke für die hilfe :), wollte es jetzt so machen das ich am ende der geänderten zeile ein lf einfüge um eine leerzeile zu erhalten
aber das funktionert auch nicht
 
Wenn Du in mitten in einer Datei Daten hinzufügst, musst Du den Rest der Datei nach hinten verschieben.
 
K

kneitzel

Der Code von @Tobias-nrw zeigt eine Möglichkeit:
- Du liest, was Du überschreiben würdest und merkst es Dir. Danach überschreibst Du.
- In einer Schleife wird das gemerkte wie im ersten Schritt geschrieben.

Aber statt da in einer Datei so herum zu editieren ist es evtl. für Dich einfacher, den ganzen Inhalt einmal zu lesen, anzupassen und dann die Datei komplett mit dem geänderten Inhalt neu zu schreiben. Je nach Größe kannst Du dann die Daten im Hauptspeicher lassen oder eben eine temporäre Datei nutzen.
 
Um in Textdateien einzufügen? Nein. Wie stellst Du Dir das vor? Deine Datei ist logisch eine Folge von Bytes. Wenn Du dazwischen etwas einfügst, muss sich die Bytefolge ändern und die verschiebt sich nun mal nicht von alleine auf der Platte.
 
K

kneitzel

Wenn Du eine Reihe mit Kartons hast, die alle aneinander stehen und nun willst du einen Karton mit einem größeren tauschen:
Das passt so erst einmal nicht. Also kannst Du entweder:
Einfache Logik: Die Kartons komplett weg nehmen und dann mit dem ausgetauschten Karton wieder hin stellen.
Komplexe Logik: Du gehst zu dem auszutauschenden Karton und nimmst diesen sowie weitere Kartons weg, bis der neue hin passt. Die zusätzlich entfernten Kartons musst Du aber wieder hinstellen, d.h. du nimmst immer wieder einen Karton weg, damit die Lücke groß genug wird für einen weggenommen Karton.

Und das mit der abgespeicherten Datei verhält sich genau so.
 
Viele Möglichkeiten wurden nu gezeigt... Das hin und her springen mit seek ist nicht so schön... Man kann es auch von hinten machen, wenn man wirklich in der Datei editieren möchte, aber man hätte immer noch das hin und her Springen und alle Texteditoren laden den Textinhalt eigentlich in den Speicher.

Bitte auch bedenken dass das einzufügende char zwischen 0 und 255 sein muss....
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben