webForumDet fria alternativet

Maxstorlek på FileStream?

.NETur .NET

3 svar · 245 visningar · startad av PDahlen

Medlem sedan apr. 2004778 inlägg
Frågan#1

Jag har en liten VB.NET WinForm app med en kodsnutt som genererar en textfil (.csv) från ett databasresultat.

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()

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.

Medlem sedan apr. 2004778 inlägg
#2

Kan tillägga att den skapade filen är 13 kB.

Medlem sedan apr. 2004778 inlägg
#3

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.

Medlem sedan apr. 2004778 inlägg
#4

ja, då var det bara lösningen kvar då. ;)

http://blogs.msdn.com/bclteam/archive/2004/08/13/214405.aspx

Hade inte stängt StreamWritern.

132 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)