Visual Basic (VB.NET) Att skriva till textfil

Permalänk

Visual Basic (VB.NET) Att skriva till textfil

Hej! Jag undrar hur man gör för att bara skriva till en textfil utan att skapa om den. Jag skrev i en annan tråd (VB.NET) innan men fick inget svar, så nu hoppas jag att denna gången få fler svar.

Permalänk
Medlem

Det finns ju en parameter när man skapar en FileStream som styr om filen ska skapas eller inte. Bara att leta upp en som bara öppnar filen Står om FileStream på msdn och det är alltid ett bra ställe när du ska kolla upp saker när det gäller .NET-framework.

Permalänk

ok, jag har varit inne där innan och letat utan att finna det jag söker...Måhända att svaret står mitt framför ögonen på mig, men jag kan då inte hitta det.

Permalänk
Avstängd

Hur kan du missa de fösta 20 länkarna som trillar upp på google vid sökning på 'write text vb.net'?

Annars så finns denna i hjälpen som följer med visual studio:

The following code example shows a simple way to write text to a text file. [Visual Basic] Imports System Imports System.IO Class Test Public Shared Sub Main() ' Create an instance of StreamWriter to write text to a file. Dim sw As StreamWriter = New StreamWriter("TestFile.txt") ' Add some text to the file. sw.Write("This is the ") sw.WriteLine("header for the file.") sw.WriteLine("-------------------") ' Arbitrary objects can also be written to the file. sw.Write("The date is: ") sw.WriteLine(DateTime.Now) sw.Close() End Sub End Class

Permalänk

Ja det är den jag har gått efter, men hur ska jag göra för att bara skriva? Där skapas ju filen samtidigt...

Antar att det är denna som ska ändras:

Dim sw As StreamWriter = New StreamWriter("TestFile.txt")

Och vad är skillnaden på Write och WriteLine ?

Permalänk
Avstängd

Det finns många olika kunstruktorer för streamwriter

Testa "New StreamWriter("fil", true);" - där 'true' sätter flaggan 'append', dvs fortsätta skriva på en befintlig fil.

WriteLine är en "Write() + Enviroment.NewLine()". Precis som det låter så skriver Write() bara tecken efter varandra, medans WriteLine skriver en ny rad i textfilen.

Write("Apa");
Write("Häst");

Ger en textfil som ser ut så här:

ApaHäst

--------

WriteLine("Apa");
WriteLine("Häst");

Ger en textfil som ser ut så här:
Apa
Häst

Kan nog inte förklara det nogrannare.

Permalänk

Ok jag förstår! Tack för hjälpen!

Edit: Får det inte att fungera riktigt...
Står att sw inte är deklarerad typ "Name sw is not declared".
(En bit av koden:)

Dim str As String str = "data.txt" Dim file As New System.IO.FileInfo(Str) If file.Exists Then Dim sw As StreamWriter = New StreamWriter("data.txt", True) Else Dim sw As StreamWriter = New StreamWriter("data.txt") End If While antal2 < NumericUpDown1.Value OpenFileDialog1.ShowDialog() ListBox1.Items.Add(OpenFileDialog1.FileName) antal2 += 1 sw.WriteLine("The date is: ") sw.WriteLine(DateTime.Now) sw.WriteLine(OpenFileDialog1.FileName) End While sw.Close()

Permalänk
Medlem

lagg Dim sw as... innan ifsatsen men ha kvar tilldelningen inuti sa ordnar det sig nog

Visa signatur

4 datorer: 9 cpuer (plats för 4 till), 10scsi+1satadisk, 7.75gb ram, bara Linux
http://isitfika.net http://code.kryo.se

Permalänk

Variable 'sw' hides a variable in an enclosing block står det när jag lägger till en likadan rad ÖVER if-satsen som ligger i if-satsen...

Permalänk

Deklarera sw innan if-satsen, tilldela i if-satsen.

Visa signatur
Permalänk
Avstängd

Vi vidareutvecklar lite för säkerhetsskull.

Eftersom du inte lyckades själv ta reda på skillnaden mellan write() och writeline() räknar jag med att du är ordentligt ny i gemet.

Du måste hålla isär vad en deklaration och en tilldelning är.

Detta är själva deklarationen: Dim sw As StreamWriter

Detta en tilldelning sw = New StreamWriter("data.txt", True)

Kompilatorn håller själv inte reda på att sw får en tilldelning, dvs blir någonting annat än null (ingenting) när det sker i en ifsats. Kompilatorn kommer inte gå igenom alla grenarna i dina if-satser och sen säga: "Nej, men vad trevligt. Hur jag än gör så kommer ju sw faktiskt bli någonting". För att kompilatorn skall förstå att även efter if-satsen så har du en fungerande streamwriter så måste du deklarera den tidigare.

Dvs, innan if satsen så har du en Dim sw As StreamWriter och i if-satsen så har du bara sw = New StreamWriter("data.txt", True).

Får du några mer problem så leta gärna först lite i hjälpen och på google, hittar du inget så hjälper vi dig gärna.

Cheers Cure

Edit: Harrejävlar.. Jag har börjat stava som en kratta. Skyller på swec.

Permalänk

ok tack för det!