Filer og mapper

From Apache OpenOffice Wiki
Jump to: navigation, search


Ofte må programmet innom mapper og filer. For programmering mot dokument ordnes dette med indirekte hjelp av Apache OpenOffice sitt API. Ellers har man i Basic egne funksjoner for direkte tilgang mot filsystemet.

Angivelse av filbane

Parameter "m" angir en bane. Det kan være absolutt (starter med roten, som i "C:\Window" eller "/usr/home" i UNIX) eller relativ (i forhold til den mappe Apache OpenOffice "står i", d.v.s. har som "current working directory"). Videre kan "m" inneholde ? for å angi at hvilket som helst tegn tillates i denne posisjon. Hvis "m" avsluttes med "*" betyr det at hva som helst tillates som avslutning.

Traversering av mappetre

Mapper er organisert i et tre. Med Dir(m,x) starter en traversering av det treet som starter i mappe m, som i eksempelet under:

Sub visFiler
  Dim nesteFil As String
  Dim alleFiler As String
 
  alleFiler = ""
  nesteFil = Dir("C:\", 0)
 
  While nesteFil  <> ""
    alleFiler = alleFiler & Chr(13) &  nesteFil ' legg inn linjeskift
    nesteFil = Dir()
  Wend
 
  MsgBox alleFiler
End Sub

Dir() uten argument gir neste fil (eller mappe). Dir (m) gir første fil i Apache OpenOffice sin gjeldende mappe. Dir (m,0) ber om kun filer i m, Dir (m,16) ber om kun mapper i m. Vil en liste kun mapper kan en f.eks.:

Sub visMapper
  Dim nesteMappe As String
  Dim alleMapper As String
 
  alleMapper = ""
  nesteMappe = Dir("C:\", 16)
 
  While nesteMappe <> ""
    alleMapper = alleMapper & Chr(13) &  nesteMappe
    nesteMappe = Dir()
  Wend
 
  MsgBox AllDirs
End Sub

Operasjon mot mapper

  • MkDir(m) oppretter m og eventuelle mellom-mapper som ikke fins
  • RmDir(m) fjerner mappe "m" og tilliggende mapper og filer renskes bort
  • FileCopy(fra, til) kopierer en fil
  • Name OldName As NewName vil gi nytt navn
  • Kill(m) fjerner en fil (ikke mappe)
  • FileExists(f) er boolsk, True hvis f finnes
  • getAttr(f) gir et Integer som avslører data om filen (1=readonly, 16=er mappe)
  • setAttr(f,a) endrer f sitt attributt til a
  • FileDateTime(f) gir sist filen ble endret
  • FileLen(f) gir filens lengde (antall byte)

Operasjon mot fil

Skal en lese eller skrive en fil fins funksjonene:

  • FreeFile: gir ledig "handle" (et Integer)
  • Open f for Output as #h: Åpne fil med navn f for skriving (h er handle)
  • Print #h, s: Skriver s til handle h
  • Line Input #h, s: Legger neste linje fra fil med handle h, i s
  • eof (h): boolsk, True hvis h er ferdig lest (nådd slutten)
  • Close #h: Stenger h

Et eksempel er:

Dim FileNo As Integer
Dim CurrentLine As String
Dim Filename As String
 
Filename = "c:\klokeord.txt"
FileNo = FreeFile
Open Filename For Output As #FileNo
Print #FileNo, "Rosenborg er best"
Print #FileNo, "Molde er best"
Close #FileNo

Et eksempel på lesing av en fil:

Dim filNummer As Integer
Dim linje As String
Dim filNavn As String
Dim innhold as String
 
filnavn = "c:\visdomsord.txt"
filNummer = Freefile
 
Open filnavn For Input As filNummer
Do While not eof( filNummer )
  Line Input #filNummer, linje
  If linje <>"" then
    innhold = innhold & linje & Chr(13)
  end if
Loop
Close #filNummer
Msgbox ( innhold )

Annet

Vil en ha økt kompatibilitet med VBA anvendes "Compatibility mode" som under:

CompatibilityMode( True ) 'set mode
CompatibilityMode( False) 'clear mode
 
Dim bMode as Boolean
bMode = CompatibilityMode()


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools