Kanske såhär?
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
intRader = UBound(Split(objTS.ReadAll, vbCrLf)) + 1
objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
10 svar · 357 visningar · startad av Jesper T
Jag skulle behöva räkna rader i en textfil med FSO, vad är smartast?
Kanske såhär?
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
intRader = UBound(Split(objTS.ReadAll, vbCrLf)) + 1
objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
Läs in filens innehåll i en variabel, splitta på radbrytning och använd UBound() för att ta reda på högsta index i arrayen.
Ok, tack.
Finns det något smidigt sätt att få WriteLine(forAppending) att skrivas förs i textfilen, och inte sist som den gör nu?
Nej, du får skriva det du ska skriva till filen, och sedan skriva tillbaka det som låg där innan.
Kanske såhär då?
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
strText = objTS.ReadAll
objTS.Close : Set objTS = Nothing
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"), 2) ' ForWriting
objTS.WriteLine("Detta kommer överst, över den gamla texten.")
objTS.Write(strText)
objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
Tack, funka 100% bra.
Hur radera allt efter rad 10?
Alltså, textfilen får endast innehålla 10 rader.
Nu börjar du bli jobbig. ;) :P
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
arrText = Split(objTS.ReadAll, vbCrLf)
objTS.Close : Set objTS = Nothing
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"), 2)
objTS.WriteLine("Detta kommer överst, över den gamla texten.")
For i = UBound(arrText) To 0 Step - 1
If i > UBound(arrText) - 10 Then
objTS.Write(arrText(i))
Else
Exit For
End If
Next
objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
Nu var du jättebussig, tårta kommer på posten.