Filhantering - olika metoder för textfilsarbete
Förord
Denna artikel demonstrerar hur du kan använda textfiler för att lagra information. Andra tekniker demonsteras också såsom att döpa om filer, ta bort filer, kontrollera om filen existerar etc.Innehåll
»»
»
»
»
»
»
»
»
»
»
»
»
Introduktion
Ofta inträffar det väl för de flesta programmerare att man vill ha någonstans att lagra information. När det gäller stora datamängder väljer säkert de flesta att lagra information i databaser. När man använder databaser så får man på köpet möjligheten att sortera ut och analysera lagrade data på ett kraftfullt sätt, inte sällan med hjälp av frågespråket SQL.En annan metod är att använda Windows-registret som lagringsplats. Detta register erbjuder ett snabbt och smidigt sätt att lagra information men är inte lämpligt för stora datamängder. Registret är däremot en lämplig plats att lagra inställningar för program och mindre mängder data,
Ett tredje alternativ för datalagring är att använda textfiler. I textfiler kan man, precis som databaser, lagra stora datavolymer men man har då inte möjligheten att ställa frågor och heller inte samma möjligheter för sortering och analys. Ofta kan man dock lösa detta på programmatisk väg eller genom att använda lämpliga ActiveX-kontroller.
I denna artikel kommer jag att visa några användbara exempel för filhantering medelst textfiler.
Döpa om en fil
Vi börjar med att demonstrera ett exempel för att döpa om en fil. Nedanstående kodexempel döper om en fil om det finns någon i aktuell katalog.
If Dir(NyttFilNamn) <> "" Then
Exit Sub
ElseIf (GammaltFilNamn) <> "" Then
Name GammaltFilNamn As NyttFilNamn
End If
Kontrollera om en fil finns
För att undvika fel kan det vara nödvändigt att förvissa sig om att en utsedd fil existerar. Använd följande kodslinga för detta.
If Dir(Filnamn) <> "" Then
MsgBox "Filen existerar!!!"
End If
Kontrollera storleken på en fil
Det kan förekomma tillfällen då man behöver veta filens storlek.
Filelength = FileLen(Filnamn)
MsgBox filelength
Läsa in textfil till en textruta
Ett vanligt förekommande programmeringssätt är att läsa in innehållet i en textfil och sedan presentera det någonstans på ett formulär. I nedanstående exempel används en textruta för att visa innehållet i textfilen test.txt.
Dim f As Integer, FileName As String
FileName = App.Path & "\test.txt"
f = FreeFile
If Dir(FileName) <> "" Then
Open FileName For Input As f
Text1.Text = Input(LOF(f), f)
Close f
End If
Läsa in en textfil radvis till en array
Det kan också vara användbart att lägga in texten i textfilen radvis till en array. Denna kod utför just denna metod.
Dim f As Integer, i As Integer
Dim FileName As String, ArrayName$()
FileName = App.Path & "\arraytest.txt"
f = FreeFile
i = 0
If Dir(FileName) <> "" Then
Open FileName For Input As f
Do While Not EOF(f)
If i Mod 10 = 0 Then ReDim Preserve ArrayName$(i + 10)
Line Input #f, ArrayName(i)
i = i + 1
Loop
Close f
End If
Läsa in en textfil radvis till en listruta
En ofta använd kontroll som används i formulär är listrutor. För att läsa in innehållet till en sådan från en textfil kan du använda detta kodexempel.
Dim f As Integer, i As Integer
Dim FileName As String, TestStr As String
FileName = App.Path & "\test.txt"
f = FreeFile
i = 0
If Dir(FileName) <> "" Then
Open FileName For Input As f
Do While Not EOF(f)
Line Input #f, TestStr
List1.AddItem TestStr
Loop
Close f
End If
Läsa in valfritt tecken från en textfil
Det är inte alltid man vill läsa in hela textfilen i ett enda svep, eller ens en hel rad. Visual Basic erbjuder programmeraren att hämta tecken från en textfil på detaljnivå. I exemplet nedan öppnas en textfil binärt för att läsa in valfria tecken.
Dim f As Integer, pos As Byte
Dim ByteStr As String, FileName As String
FileName = App.Path & "\test.txt"
pos = 1 'Läser första tecknet i filen
ByteStr = Space$(1) 'skapar plats för ett tecken.
' Öka för att läsa in flera...
f = FreeFile
i = 0
If Dir(FileName) <> "" Then
Open FileName For Binary As f
Get f, pos, ByteStr
Close f
End If
MsgBox ByteStr
Spara innehållet i en array() till en fil
Används nedanstående kodslinga för att spara ned en array till en textfil.
Dim f As Integer, FileName As String
Dim i As Integer, ArrayName As Variant
ArrayName = Array(10, 20, 30, 120, 500)
FileName = App.Path & "\test.txt"
f = FreeFile
i = 0
Open FileName For Output As f
For i = 0 To UBound(ArrayName)
Print #f, ArrayName(i)
Next i
Close f
Spara innehållet i en listruta till en fil
Detta exemplet visar hur du sparar ned innehållet i en listruta till en textfil.
Dim f As Integer, FileName As String
Dim i As Integer
FileName = App.Path & "\test.txt"
f = FreeFile
i = 0
Open FileName For Output As f
For i = 0 To List1.ListCount - 1
Print #f, List1.List(i)
Next i
Close f
Spara innehållet i en textruta till en fil
Här följer en kodslinga för att spara innehållet i en textruta till en textfil.
Dim f As Integer, FileName As String
Dim i As Integer
FileName = App.Path & "\test.txt"
f = FreeFile
i = 0
If Len(Text1.Text) > 0 Then
Open FileName For Output As f
Print #f, Text1.Text
Close f
End If
Spara innehållet i en textruta i slutet en fil
Detta exempel utför egentligen samma operation som i ovanstående kodexempel, men med den skillnaden att den lägger till texten i slutet av filen.
Dim f As Integer, FileName As String
Dim i As Integer
FileName = App.Path & "\test.txt"
f = FreeFile
i = 0
If Len(Text1.Text) > 0 Then
Open FileName For Append As f
Print #f, Text1.Text
Close f
End If
Radera en fil
Till sist ett exempel för att radera en fil.
Dim FileName As String
FileName = App.Path & "\test.txt"
If Dir(FileName) <> "" Then Kill FileName
/Staffan Berg
0 Kommentarer