Hee,
Ik ben bezig met het schrijven van een stuk code waarbij midden in een .txt file een aantal regels moet worden toegevoegd.
- De eerste drie regels van de file moeten blijven staan
- De nieuwe (uit een aantal txtvakken komende) text moet er onder komen
- Daaronder moet de oude tekst weer gewoon komen te staan.
Voorwaarde: De opmaak moet behouden blijven (enters e.d.)
Ik doe het volgende.
1. Ik declareer m'n variabelen en lees de .txtvelden uit naar de variabelen (gaat goed)
2. Ik creëer 2 streamreaders voor hetzelfde tekstbestand. (gaat goed)
3. De eerste reader laat ik met een loopje het aantal regels van het tekstbestand bepalen (gaat goed)
4. Ik creëer een string array met een grootte gelijk aan het aantal regels van de textfile. (gaat goed)
5. De tweede reader laat ik met een loopje de eerste 3 regels doorlopen zodat de reader op positie vier staat (vanaf regel vier moet de data naar de string array) (gaat goed)
6. Vanaf die vierde regel gaat een andere loop lopen die met streamreader.readline de regels in de string array zet (lijkt ook goed te gaan)
7. ik .Close() en .Dispose() beide streamreaders
8. Ik wis het originele textbestand met my.computer.filesystem.deletefile en maak met de streamwriter m.b.v. file.createtext het tekstbestand opnieuw.
9. Met streamwriter.writeline schrijf ik eerst die eerste 3 regels weer terug in het nieuwe textbestand (gaat goed)
10. Met streamwriter.writeline schrijf ik de nieuwe regels die uit de tekstvakken komen naar het nieuwe textbestand (gaat goed), Hier komen de regels keurig onder elkaar te staan zonder witregels...
En nu komen we op het punt waar het fout gaat.......:
11. Ik ga nu loopen om de oude regels vanuit de string array 1 voor 1 terug te schrijven m.b.v. streamwriter.writeline(). Na iedere regel die ik wegschrijf komt er in het tekstbestand nu een witregel! Blijkbaar een verborgen enter o.i.d. aan het einde van iedere string in de array?. Het is dus de bedoeling dat alle regels in het tekstbestand direct onder elkaar komen te staan zonder witregels...
Bijbehorende code vind je helemaal onder aan het codeblok hieronder. Ik heb me al rot gezocht maar vind geen oplossing. Kan iemand me helpen?
------------ De code ------------
Ik ben bezig met het schrijven van een stuk code waarbij midden in een .txt file een aantal regels moet worden toegevoegd.
- De eerste drie regels van de file moeten blijven staan
- De nieuwe (uit een aantal txtvakken komende) text moet er onder komen
- Daaronder moet de oude tekst weer gewoon komen te staan.
Voorwaarde: De opmaak moet behouden blijven (enters e.d.)
Ik doe het volgende.
1. Ik declareer m'n variabelen en lees de .txtvelden uit naar de variabelen (gaat goed)
2. Ik creëer 2 streamreaders voor hetzelfde tekstbestand. (gaat goed)
3. De eerste reader laat ik met een loopje het aantal regels van het tekstbestand bepalen (gaat goed)
4. Ik creëer een string array met een grootte gelijk aan het aantal regels van de textfile. (gaat goed)
5. De tweede reader laat ik met een loopje de eerste 3 regels doorlopen zodat de reader op positie vier staat (vanaf regel vier moet de data naar de string array) (gaat goed)
6. Vanaf die vierde regel gaat een andere loop lopen die met streamreader.readline de regels in de string array zet (lijkt ook goed te gaan)
7. ik .Close() en .Dispose() beide streamreaders
8. Ik wis het originele textbestand met my.computer.filesystem.deletefile en maak met de streamwriter m.b.v. file.createtext het tekstbestand opnieuw.
9. Met streamwriter.writeline schrijf ik eerst die eerste 3 regels weer terug in het nieuwe textbestand (gaat goed)
10. Met streamwriter.writeline schrijf ik de nieuwe regels die uit de tekstvakken komen naar het nieuwe textbestand (gaat goed), Hier komen de regels keurig onder elkaar te staan zonder witregels...
En nu komen we op het punt waar het fout gaat.......:
11. Ik ga nu loopen om de oude regels vanuit de string array 1 voor 1 terug te schrijven m.b.v. streamwriter.writeline(). Na iedere regel die ik wegschrijf komt er in het tekstbestand nu een witregel! Blijkbaar een verborgen enter o.i.d. aan het einde van iedere string in de array?. Het is dus de bedoeling dat alle regels in het tekstbestand direct onder elkaar komen te staan zonder witregels...
Bijbehorende code vind je helemaal onder aan het codeblok hieronder. Ik heb me al rot gezocht maar vind geen oplossing. Kan iemand me helpen?
------------ De code ------------
Visual Basic .NET: Default
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
| 'Textfile uitlezen. 'Eerst readers aanmaken. Dim StreamReader As New StreamReader("G:\Alexanderhof.nl\Beheer\weblog.txt") Dim StreamTeller As New StreamReader("G:\Alexanderhof.nl\Beheer\weblog.txt") 'Aantal regels bepalen. Try While Not IsNothing(StreamTeller.ReadLine) regels += 1 End While 'misschien nog -3 hier om de array passend te maken..? Catch MsgBox("Er is een fout opgetreden bij het tellen van het aantal regels van weblog.txt", MsgBoxStyle.Information, "Foutmelding") End Try Dim strRegel(regels) As String 'Met de andere lezer de eerste drie regels overlsan Try For regel As Integer = 0 To 2 StreamReader.ReadLine() Next regel 'De reader staat nu op regel 4, vanaf hier gaan we loopen om de array te vullen For x As Integer = 0 To regels strRegel(x) = StreamReader.ReadLine 'TODO: Hier zorgen dat de regeleindes eruit gaan... 'MsgBox(strRegel(x)) x += 1 Next x 'MsgBox(strRegel(0)) Catch MsgBox("Er is een fout opgetreden bij het vullen van de string array.", MsgBoxStyle.Information, "Foutmelding") End Try StreamReader.Close() StreamTeller.Close() StreamReader.Dispose() StreamTeller.Dispose() 'De file wissen Try My.Computer.FileSystem.DeleteFile("G:\Alexanderhof.nl\Beheer\weblog.txt") Catch MsgBox("Er is een fout opgetreden bij het wissen van de oude weblog.txt.", MsgBoxStyle.Information, "Foutmelding") End Try 'en direct opnieuw aanmaken & vullen: 'TODO: File.CreateText(Server.MapPath(".\Upload\") & "test.txt") implementeren voor dynamisch pad. Try Dim StreamWriterWeblog As StreamWriter 'StreamWriterWeblog = My.Computer.FileSystem.OpenTextFileWriter("G:\Alexanderhof.nl\Beheer\weblog.txt", True) StreamWriterWeblog = File.CreateText("G:\Alexanderhof.nl\Beheer\weblog.txt") StreamWriterWeblog.WriteLine(strXML) StreamWriterWeblog.WriteLine(strRSS) StreamWriterWeblog.WriteLine(strChannel) StreamWriterWeblog.WriteLine(strItemOpen) StreamWriterWeblog.WriteLine(strTitel) StreamWriterWeblog.WriteLine(strDoor) StreamWriterWeblog.WriteLine(strDatumTijd) StreamWriterWeblog.WriteLine(strBericht) StreamWriterWeblog.WriteLine(strItemClose) 'loopen om de oude regels weer terug te schrijven.. For i As Integer = 0 To regels StreamWriterWeblog.WriteLine(strRegel(i)) Next StreamWriterWeblog.Close() StreamWriterWeblog.Dispose() Catch MsgBox("Er is een fout opgetreden bij het creeren van de update op weblog.txt", MsgBoxStyle.Information, "Foutmelding") End Try |