Wie kann ich erst in z.B.: 23 Zeile schreiben?

Vamp7771

Mitglied
Hallo,

erst mal der Code selbst:
Code:
#Region " Überschreibe den Counter in die Konfig.txt"
    Private Sub Write_Count_Nr()
        Dim schreiben, lesen As String
        Dim sr As New StreamReader(Anlagepfad)
        lesen = sr.ReadToEnd
        sr.Close()

'HIER FEHLT DIE IDEE
'Hier müsste ich wissen, wie ich nun den eingelesenen Inhalt von String "lesen" ändern kann.
'z.B.: Nur Zeile 23 überschreiben 

        Dim fs As New FileStream(Anlagepfad, FileMode.Open)
        Dim wr As New StreamWriter(fs)
        Laufende_Nummer = String.Format("{0:d4}", Print_Count)
        schreiben = Laufende_Nummer
        wr.WriteLine(schreiben)
        wr.Close()
        fs.Close()
    End Sub
#End Region

Kurz: Ich lese den Inhalt der kompletten Konfig Datei ein.
Nun muss ich eine bestimmte Zeile (die Zeile merke ich mir in einem Row_Count im Form_Load) mit einem neuen Wert überschreiben.

Aber wie kann ich das bewerkstelligen, ich kenne nur writeline, als Methode für einen neue fortlaufenden Text, oder als .Append.

Gibt es eine Möglichkeit eine bestimmte Zeile zu überschreiben und den Rest so stehen zu lassen?
Ich habe den Text in einem String
Ich habe die Zeilennummer die ich will (z.B.: Zeile 23)
Ich habe den Text den ich schreiben will (z.B.: 1924)

Ich habe nur keine Ahnung wie ich das kombinieren kann.

Bitte um Hilfe, steck ehrlich fest :(

Euer Vampy
 
Zuletzt bearbeitet:
Hi!

Hab heut nicht so viel Zeit für eine ausführliche Antwort.
Ich hab Dir schonmal dazu geraten _nicht_ direkt mit den Dateien zu arbeiten ([post=1346684]Post[/post]).
So kommst nur in solche Probleme wie dieses grad, was nur aufwendig bzw. nicht sehr sauber zu lösen währe.
cosmo hat gesagt.:
Btw. solange Du die Daten nicht exportieren musst, würd ich das ganze in einer Collection abfackeln.
Das ist hundert mal schneller und vor allem einfacher zu implementieren.
Zum Schluss kannst dann die Daten nach belieben permanent in einer Datei ablegen.
Soll heissen das Du die Datei komplett einließt und in eine Collection oder Dictionary temporär lädst.
Damit kannst bquemer arbeiten und es ist vor allem viel schneller. Danach schreibst die Daten in einem Zug wieder in die Textdatei.

Working with collections in the .NET Framework

//Edit: Weitere Vorteile währen auch noch das bequeme sortieren oder der Export in andere Dateivormate.
Wenn es nicht anders geht, die Daten einfach zu riesig sind, musst dich Zeilenweise durcharbeiten
und die Datensätze Zeilenweise in ein temporäres File ablegen, die Quelldatei löschen und die temporäre Datei umbenennen.
 
Zuletzt bearbeitet:
Hm, das klingt vernüftig, danke für den Tipp, nur muss ich ein .txt file nehmen, da ich unter anderem auch auf eine AS400 schreibe und dafür meine Tools schon fertig habe - und diese basieren alle auf .txt Files.

Aber ich werde in Zukunft versuchen Collections zu verwenden.

Dennoch, kann mir jemand einen Tipp geben wie ich das o.g. Problem in den Griff bekommen kann?
 
Dennoch, kann mir jemand einen Tipp geben wie ich das o.g. Problem in den Griff bekommen kann?
Och Vampy, :D
ließ doch mal was ich geschrieben hab:
cosmo hat gesagt.:
//Edit: Weitere Vorteile währen auch noch das bequeme sortieren oder der Export in andere Dateivormate.
Wenn es nicht anders geht, die Daten einfach zu riesig sind, musst dich Zeilenweise durcharbeiten
und die Datensätze Zeilenweise in ein temporäres File ablegen, die Quelldatei löschen und die temporäre Datei umbenennen.
Soll heißen das Du die Quelldatei Zeile für zeile einließt und gleichzeitig jede Zeile in ein temnporäres File schreibst.
Während dessen zählst die Zeilen und wenn Du an der gewünschten Zeile angekommen bist,
schreibst den neuen Datensatz in die temporäre Datei. Danach schreibst die zestlichen Zeilen aus der Quelldatei hinterher hinein.
Solltest aber die Zeile die Du überschrieben hast in der Quelldatei überspringen... :D
Wenn Du fertig bist, löschst die Quelldatei und benennst die temporäre Datei in den Namen der Quelldatei um.
 
Hm, *peinlich ist*

weißt du es ist noch früh und Kaffee gabs auch erst 3 mal :)
Vielen Dank für den Tipp.
So mach ich das!

Super!
 
Zurück