Hej, Det blir nog som du säger. Såvida inte du har någon tydlig brytning på varje rad, exempelvis vbCrLf. I så fall kan du läsa upp allting i en textmassa och splitta informationen för att få ut rätt rad. Hi, Om filerna är stora blir det mycket snabbare, och kommer kräva mycket mindre Ram, om du i stället läser "baklänges", t.ex. från filstorlek - 1 kb. Hmm detta låter intressant... Här får du lite kod för att läsa i slutet på en textfil, läsa näst sista raden i en text-fil
Jag har en aspsida där jag vill läsa näst sista raden i en textfil.
Går det att göra på ett enklare sätt än att loopa igenom hela filen med ts.ReadLine (där ts är ett textstreamobject)?Sv: läsa näst sista raden i en text-fil
<code>
textmassa = fs.ReadAll
tmp = Split(textmassa, vbCrLf)
if ubound(tmp) > 0 then
nästsistaraden = tmp(ubound(tmp)-1)
else
' finns inga rader
end if
</code>
Med reservation för att det kan vara (ubound(tmp) -2 eftersom en array är zerobased (börjar på 0).Sv: läsa näst sista raden i en text-fil
Some files may not have any CrLf only Lf
Be carefull if the file does not have CrLf markers but only Lf's then the split will fall over.
:) just a heads up
regards PaulSv: läsa näst sista raden i en text-fil
Leta i den chunk du läst efter CrLf OR Lf med någonting efter, i så fall är det näst sista raden. Du har nu sparat 99kb om filen är på 100kb. Det är inte så dumt.
Hittar du inget där och vill ha hängseln på, så backar du 1 kb till, osv tills du verkligen hittar näst sista raden (eller filen är slut).
OlaSv: läsa näst sista raden i en text-fil
Du råkar inte ha ett litet exempel på hur man läser en fil "baklänges" ?Sv: läsa näst sista raden i en text-fil
resten får du räkna ut själv ;)
<code>
Dim size, pos, textData, fileName
Dim CrLf, st, fso
Set st = CreateObject("ADODB.Stream")
Set fso = CreateObject("Scripting.FileSystemObject")
fileName = "C:\data.txt"
CrLf = Chr(13) & Chr(10)
size = fso.GetFile(fileName).size
pos = size - 256
st.Open
st.Charset = "windows-1252"
st.LoadFromFile (fileName)
st.Position = pos
textData = st.ReadText
st.Close
MsgBox "slutet på filen: " & textData
</code>