Jag har en liten VB.NET WinForm app med en kodsnutt som genererar en textfil (.csv) från ett databasresultat. Ingen skillnad. Nu blir jag knäpp tror jag. Mysteriet tätnar. ja, då var det bara lösningen kvar då. ;)Maxstorlek på FileStream?
<code>
Dim fs As FileStream = New FileStream(LogiXUsersCSV, FileMode.CreateNew, FileAccess.Write)
Dim w As StreamWriter = New StreamWriter(fs) ' create a stream writer
w.BaseStream.Seek(0, SeekOrigin.Begin) ' set the file pointer to the end of file
w.WriteLine("""PLACENAME"",""ADDRESS1"",""ADDRESS2"",""ADDRESS3"",""CONTACT""")
For Each dr In myDataSet.Tables(0).Rows
w.WriteLine("""" & dr(3) & """,""" & dr(5) & """,""" & dr(7) & """,""" & dr(6) & """,""" & dr(1) & """")
Next
fs.Close()
</code>
Problemet är att jag inte får med alla rader i filen. I loopen så har jag testat att skriva ut alla rader som är tänkta att hamna i textfilen och det kommer fram ca 10 rader som inte är med i textfilen. Textfilens sista rad slutar mitt i.
Finns det någon maxstorlek när man skapar en fil med FileStream och StreamWriter som gör att det inte skrivs mer i filen? Jag hittade nåt om Asynchronous IO för större filer men det blir ingen skillnad när jag använder det.Sv:Maxstorlek på FileStream?
Men jag har gått vidare i felsökningen och stött på något konstigare.
Jag gjorde så att jag tog bort alla de rader som kom med i filen första gången. Provade då att köra igen men då blev filen tom. Inte ens första raden, med rubriker, skrivs in i filen.
Men om jag sedan lägger tillbaka samtliga rader så blir det som första gången.Sv: Maxstorlek på FileStream?
Jag har tagit bort alla raderna i databasen. Det innebär att det enda som borde skrivas är:
w.WriteLine("""PLACENAME"",""ADDRESS1"",""ADDRESS2"",""ADDRESS3"",""CONTACT""")
Men filen blir tom.
Men om jag fyller databastabellen igen så skriver den raderna, men med samma fel som första gången.Sv:Maxstorlek på FileStream?
Eftersom det är de sista 10 raderna som inte kommit med så gjorde jag så att jag tog bort de sista 11 raderna i databasen. Då saknas det ändå 14 rader när textfilen är skriven.
Om man ska dra en slutsats här så borde det innebära att det alltid är ett visst antal tecken eller bytes som försvinner. När mängden data är mindre än den försvunna mängden så blir filen tom.
Men vad sjutton beror det på?Sv: Maxstorlek på FileStream?
http://blogs.msdn.com/bclteam/archive/2004/08/13/214405.aspx
Hade inte stängt StreamWritern.