[VB 2008] Einzelne Zeilen einer .txt Datei ändern

03/18/2010 20:00 HenryTheSir#1
Guten Tag.

Wie in der Überschrift schon steht suche ich einen Code mit dem man per VB 2008 eine bestimmte Zeile einer .txt Datei ändern kann...
03/18/2010 21:13 xNopex#2
Step 1: Datei komplett einlesen und zeile für zeile in einem Array, vector, oder was es sonst bei vb gibt speichern

Step 2: Im vector, array,... nach zeile suchen

Step 3: Gefundene Zeile neu überschreiben

Step 4: Datei komplett neu abspeichern.



Fertig
03/18/2010 21:15 HenryTheSir#3
gehts auch ohne die datei komplett zu erneuern? oder muss man die komplett einlesen und dann neu speichern?
03/18/2010 21:21 xNopex#4
Wenn die Datei nicht gerade mehrere 100MB bis xGB groß ist, dürfte es von der Performance her doch kein Problem sein, die Datei komplett einzulesen und neu zu schreiben? Wieso willst du das denn nicht machen? Ist doch eine einfache Variante. Du kannst natürlich die Datei nur bis zu der Zeile einlesen, bis du die entsprechende Zeile gefunden hast, dort den Positionzeiger setzen und anfangen zu schreiben. Wenn VB dafür entsprechende Methoden parat hat, kannst dus auch so kompliziert machen.
03/18/2010 21:34 HenryTheSir#5
weißt du wo man beispielcode für deine 1. idee herbekommt? weil den den ich bis jetzt gefunden habe meistens nicht funktioniert hat

€: z. B. : die datei heißt test.txt und man will die 4.te zeile ausgelesen/geändert haben
03/18/2010 21:41 Nosferatu.#6
Es wer lieb wenn du uns mal genauer beschreiben könntest wie du dir das vorgestellt hast.

Es gibt mehrere arten eine datei auszulesen und werte zu ändern, nehmen wir ein gutes beispiel:

Ini Datei:

Code:
[Section]
ident=value
XML Datei:

Code:
<section>
     <ident>value</ident>
</section
CSV Datei:

Code:
section,ident,value
oder einfach nur eine Text File

Code:
Value1
Value2
Value3
03/18/2010 21:52 HenryTheSir#7
Code:
Public Class Form1
   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim eingabe As String
        Dim Speichern As New IO.StreamWriter("Test.txt", False)
        eingabe = TextBox1.Text
        Speichern.WriteLine(eingabe)
        Speichern.Close()
    End Sub
End Class
wie müsste ich das umändern um damit eine bestimmte zeile umzuschreiben/zu ändern ?

also ich hab mir das so vorgestellt das in der .txt datei steht z.b.:
Code:
1 in der 1.sten zeile
2 in der 2.ten zeile
und das man dann die 2.te zeile ändern kann ohne die erste damit zu löschen/überschreiben what ever


ist das genau genug erklärt?
03/18/2010 22:14 Nosferatu.#8
Quote:
Originally Posted by Henry715 View Post
Code:
Public Class Form1
   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim eingabe As String
        Dim Speichern As New IO.StreamWriter("Test.txt", False)
        eingabe = TextBox1.Text
        Speichern.WriteLine(eingabe)
        Speichern.Close()
    End Sub
End Class
wie müsste ich das umändern um damit eine bestimmte zeile umzuschreiben/zu ändern ?

also ich hab mir das so vorgestellt das in der .txt datei steht z.b.:
Code:
1 in der 1.sten zeile
2 in der 2.ten zeile
und das man dann die 2.te zeile ändern kann ohne die erste damit zu löschen/überschreiben what ever


ist das genau genug erklärt?
Darf ich dich fragen wieso gerade über eine Text / Datei. Gibts einen grund dafür ? Oder hast du keine einfachen Ini/XML Header? Das schwierige an deine Datei ist das es dort keine anhalts punkte (im warsten sinne des wortes) gibt, sprich eine "Section".

Klar ist was du vorhast möglich. Aber sicher nicht mit son bissel Code.

Der ganz klar einefache weg ist wie xNopex schon sagte in einen Array laden + Änder + Speichern.
03/18/2010 22:17 HenryTheSir#9
Quote:
Der ganz klar einefache weg ist wie xNopex schon sagte in einen Array laden + Änder + Speichern.
wie würde der code dafür in etwa lauten?
03/20/2010 11:35 musicinstructor#10
vllt hilft das: [Only registered and activated users can see links. Click Here To Register...]