Storitev ScriptForge.FileSystem service

Storitev FileSystem vključuje metode za ravnanje z datotekami in mapami. Sledi nekaj primerov funkcionalnosti, ki jih zagotavlja ta storitev:

note

Metode v storitvi FileSystem so večinoma utemeljene na UNO-vmesniku XSimpleFileAccess.


Definicije

Spodnja tabela izpiše glavne parametre, ki jih uporablja večina metod iz storitve FileSystem.

Parameter

Opis

FileName

Polno ime datoteke, vključno s potjo, a brez ločila poti na koncu.

FolderName

Polno ime mape, vključno s potjo. Vsebuje lahko zaključno ločilo poti (ali pa ne).

Name

Zadnja komponenta Folder Name ali File Name, vključno s končnico. Ta parameter je vedno izražen v domorodnem zapisu operacijskega sistema.

BaseName

Zadnja komponenta Folder Name ali File Name, brez končnice.

NamePattern

Katero koli od zgornjih imen z nadomestnimi znaki v zadnji komponenti. Dovoljen nadomestni znaki so:

  • "?" predstavlja poljuben posamičen znak.

  • "*" predstavlja nič, enega ali več poljubnih znakov.


tip

Storitev FileSystem omogoča izvajanje operacij nad več datotekami hkrati. Z uporabo vzorcev imen lahko z uporabniškimi skripti kopirate, premikate ali izbrišete več datotek. Z vgrajenimi metodami Basic pa lahko obravnavate le posamične datoteke.


Notacija imen datotek

Notacijo, uporabljeno za zapis imen datotek in map tako za argumente kot za vrnjene vrednosti določa lastnost FileNaming storitve FileSystem.

Na kratko: možne vrste reprezentacije so "URL" (datotečna notacija URL), "SYS" (notacija operacijskega sistema) in "ANY" (privzeta vrednost). Glejte tudi spodaj.

tip

Primer notacije URL je file:///C:/Documents/my_file.odt Poskusite uporabljati notacijo URL, kadar je le možno, saj gre za bolj prenosljiv način.


Priklic storitve

Pred uporabo storitve FileSystem je potrebno naložiti knjižnico ScriptForge na sledeč način:


        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      

Naslednji odlomek kode prikliče storitev FileSystem. Kot primer je bila uporabljena metoda BuildPath.


      Dim FSO As Variant
      FSO = CreateScriptService("FileSystem")
      FSO.BuildPath(...)
    
note

Ta storitev je v celoti podprta v jezikih Basic in Python. Vsi primeri so zapisani v programskem jeziku Basic in jih lahko enostavno pretvorite v Python.


Lastnosti

Ime

Samo za branje

Vrsta

Opis

FileNaming

Ne

String

Določi ali vrne trenutno notacijo datotek in map, možne vrednosti so "ANY", "URL" in "SYS":

  • "ANY": (privzeta vrednost) metode storitve FileSystem sprejemajo za vhodne vrednost tako zapis URL kot trenutno notacijo operacijskega sistema, vendar vedno vrnejo nize v zapisu URL.

  • "URL": metode storitve FileSystem pričakujejo za vhodne argumente notacijo URL in vrnejo nize URL.

  • "SYS": metode storitve FileSystem pričakujejo notacijo trenutnega operacijskega sistema tako za vhodne argumente kot za vrnjene nize.

Ko je določena, lastnost FileNaming ostane nespremenjene do konca seje LibreOffice oz. do naslednje določitve.

ConfigFolder

Da

String

Vrne mapo s prilagoditvami LibreOffice.

ExtensionsFolder

Da

String

Vrne mapo, v kateri so nameščene razširitve.

HomeFolder

Da

String

Vrne domačo mapo uporabnika.

InstallFolder

Da

String

Vrne namestitveno mapo LibreOffice.

TemplatesFolder

Da

String

Vrne mapo s sistemskimi datotekami predlog.

TemporaryFolder

Da

String

Vrne mapo začasnih datotek, kot jo določajo nastavitve poti v LibreOffice.

UserTemplatesFolder

Da

String

Vrne mapo, ki vsebuje uporabniško-določene datoteke predlog.


Seznam metod storitve FileSystem

BuildPath
CompareFiles
CopyFile
CopyFolder
CreateFolder
CreateTextFile
DeleteFile
DeleteFolder
FileExists

Files
FolderExists
GetBaseName
GetExtension
GetFileLen
GetFileModified
GetName
GetParentFolderName

GetTempName
HashFile
MoveFile
MoveFolder
OpenTextFile
PickFile
PickFolder
SubFolders


BuildPath

Združi pot mape in ime datoteke in vrne polno ime datoteke z veljavnim ločilom poti. Ločilo poti je dodano po potrebi.

Skladnja:


        FSO.BuildPath(FolderName As String, Name As String) As String
    

Parametri:

FolderName: pot, s katero bo kombinirano ime Name. Ni potrebno, da navedena pot predstavlja obstoječo mapo.

Name: ime datoteke, ki bo pripeto imenu mape FolderName. Ta parameter uporablja notacijo trenutnega operacijskega sistema.

Primer:


      Dim FSO : FSO = CreateScriptService("FileSystem")
      FSO.FileNaming = "URL"
      MsgBox FSO.BuildPath("file:///home/user", "sample file.odt")
      'file:///home/user/sample%20file.odt
    

CompareFiles

Primerja dve datoteki in vrne True, če se zdita identični.

Glede na vrednost argumenta CompareContents je primerjava med datotekama lahko samo glede na atribute datoteke (kot je datum zadnje spremembe) ali glede na vsebino datoteke.

Skladnja:


          FSO.CompareFiles(FileName1 As String, FileName2 As String, [CompareContents As Boolean]) As Boolean
      

Parametri:

FileName1, FileName2: imena datotek za primerjavo.

CompareContents: če je True, bo vsebina datotek primerjana (privzeto = False).

Primer:


        FSO.FileNaming = "SYS"
        If FSO.CompareFiles("C:\myFile1.txt", "C:\myFile2.txt", CompareContents := False) Then
            ...
        End If
      

CopyFile

Kopira eno ali več datotek iz enega mesta na drugega. Vrne True, če je kopirana vsaj ena datoteka, ali False, če je prišlo do napake.

Do napake pride tudi, če parameter Source uporablja nadomestne znake in se z iskanim vzorcem ne ujema nobena datoteka.

Metoda se ustavi nemudoma, ko naleti na napako. Metoda se ne povrne niti ne razveljavi spremembe, opravljene pred nastopom napake.

Skladnja:


        FSO.CopyFile(Source As String, Destination As String, [Overwrite As Boolean]) As Boolean
    

Parametri:

Source: lahko je FileName (ime datoteke) ali NamePattern (vzorec imena), ki določa eno ali več datotek, ki jih želite kopirati.

Destination: lahko je ime datoteke FileName, ki določa, kam naj bo kopirana posamezna datoteka Source, ali ime mape FolderName, v katero bo kopiranih več datotek iz mape Source.

Overwrite: če je True (privzeto), je datoteke možno prepisati. Metoda spodleti, če je Destination samo za branje, ne glede na vrednost Overwrite.

Primer:


        FSO.FileNaming = "SYS"
        ' Kopira eno samo datoteko.
        FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
        ' Kopira več datotek. Kopirajo se samo datoteke, podmape ne.
        FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)
    

CopyFolder

Kopira eno ali več map z enega mesta na drugo. Vrne True, če je kopirana vsaj ena mapa, oz. False, če nastopi napaka.

Do napake pride tudi, če parameter Source uporablja nadomestne znake in se z iskanim vzorcem ne ujema nobena mapa.

Metoda se ustavi nemudoma, ko naleti na napako. Metoda se ne povrne niti ne razveljavi spremembe, opravljene pred nastopom napake.

Skladnja:


        FSO.CopyFolder(Source As String, Destination As String, [Overwrite As Boolean]) As Boolean
    

Parametri:

Source: lahko je FolderName (ime mape) ali NamePattern (vzorec imena), ki določa eno ali več map, ki jih želite kopirati.

Destination: določa ime mape FolderName. v katero bo kopirana mapa oz. mape, določene z nizom Source.

Overwrite: če je True (privzeto), je datoteke možno prepisati. Metoda spodleti, če je Destination samo za branje, ne glede na vrednost Overwrite.

Primer:


        FSO.FileNaming = "SYS"
        FSO.CopyFolder("C:\Documents\*", "C:\Temp\", Overwrite := False)
        ' Kopirane so mape, njihove datoteke in njihove podmape
    

CreateFolder

Ustvari navedeno mapo FolderName. Vrne True, če je mapa uspešno ustvarjena.

Če ima navedena mapa nadrejeno mapo, ki ne obstaja, bo tudi ta ustvarjena.

Skladnja:


        FSO.CreateFolder(FolderName As String) As Boolean
    

Parametri:

FolderName: niz, ki predstavlja mapo, ki bo ustvarjena. Če mapa že obstaja, prikliče izjemo.

Primer:


        FSO.FileNaming = "SYS"
        FSO.CreateFolder("C:\NewFolder\")
    

CreateTextFile

Ustvari navedeno datoteko in vrne predmet TextStream, s katerim lahko pišete v datoteko.

Metoda vrne predmet Null, če je prišlo do napake.

Skladnja:


        FSO.CreateTextFile(FileName As String, [Overwrite As Boolean], [Encoding As String]) As Object
    

Parametri:

FileName: ime datoteke, ki naj bo ustvarjena.

Overwrite: logična vrednost, ki določa, če je datoteko FileName dovoljeno prepisati (privzeto = True).

Encoding: nabor znakov, ki naj bo uporabljen. Privzeta kodiranje je »UTF-8«.

Primer:


        Dim myFile As Object
        FSO.FileNaming = "SYS"
        Set myFile = FSO.CreateTextFile("C:\Temp\ThisFile.txt", Overwrite := True)
    
note

Če želite izvedeti več o imenih naborov znakov, si oglejte stran Nabori znakov IANA (IANA's Character Set) (v angl.). Upoštevajte, da LibreOffice ne podpira vseh obstoječih naborov znakov.


DeleteFile

Izbriše eno ali več datotek. Vrne True, če je izbrisana vsaj ena datoteka, ali False, če je prišlo do napake.

Do napake pride tudi, če parameter FileName uporablja nadomestne znake in se z iskanim vzorcem ne ujema nobena datoteka.

Datoteke, ki jih želite izbrisati, ne smejo biti samo za branje.

Metoda se ustavi nemudoma, ko naleti na napako. Metoda se ne povrne niti ne razveljavi spremembe, opravljene pred nastopom napake.

Skladnja:


        FSO.DeleteFile(FileName As String) As Boolean
    

Parametri:

FileName: lahko je FileName (ime datoteke) ali NamePattern (vzorec imena), ki določa eno ali več datotek, ki jih želite izbrisati.

Primer:


        FSO.FileNaming = "SYS"
        FSO.DeleteFile("C:\Temp\*.docx")
        ' Izbrišejo se le datoteke, podmape ne
    

DeleteFolder

Izbriše eno ali več map. Vrne True, če je izbrisana vsaj ena mapa, oz. False, če nastopi napaka.

Do napake pride tudi, če parameter FolderName uporablja nadomestne znake in se z iskanim vzorcem ne ujema nobena mapa.

Mape, ki jih želite izbrisati, ne smejo biti samo za branje.

Metoda se ustavi nemudoma, ko naleti na napako. Metoda se ne povrne niti ne razveljavi spremembe, opravljene pred nastopom napake.

Skladnja:


        FSO.DeleteFolder(FolderName As String) As Boolean
    

Parametri:

FolderName: lahko je FolderName (ime mape) ali NamePattern (vzorec imena), ki določa eno ali več map, ki jih želite izbrisati.

Primer:


        FSO.FileNaming = "SYS"
        FSO.DeleteFolder("C:\Temp\*")
        ' Izbrisane so samo mape, datoteke v vrhnji mapi (C:\Temp\) niso
    

FileExists

Vrne True, če je dano ime datoteke veljavno in datoteka obstaja, sicer metoda vrne False.

Če je parameter FileName dejansko ime obstoječe mape, metoda vrne False.

Skladnja:


        FSO.FileExists(FileName As String) As Boolean
    

Parametri:

FileName: niz, ki predstavlja datoteko, ki bo preizkušena.

Primer:


        FSO.FileNaming = "SYS"
        If FSO.FileExists("C:\Documents\my_file.odt") Then
            '...
        End If
    

Files

Vrne ničelno polje map, shranjenih v dani mapi. Vsak vnos v polju je niz, ki vsebuje polno pot in ime datoteke.

Če mapa FolderName ne obstaja, prikliče napako.

Vrnjeni seznam lahko filtrirate z nadomestnimi znaki.

Skladnja:


        FSO.Files(FolderName As String, [Filter As String]) As Variant
    

Parametri:

FolderName: niz, ki predstavlja mapo. Mapa mora obstajati. FolderName ne sme opredeljevati datoteke.

Filter: niz, ki vsebuje nadomestne znake ("?" in "*"), ki bodo uporabljeni na vrnjenem seznamu datotek (privzeto je enak »«).

Primer:


        Dim filesList As Variant, file As String
        FSO.FileNaming = "SYS"
        filesList = FSO.Files("/home/user/", "*.txt")
        For Each file In filesList
            ' ...
        Next file
    

FolderExists

Vrne True, če je dano ime mape FolderName veljavno in mapa obstaja, sicer metoda vrne False.

Če je parameter FolderName dejansko ime obstoječe datoteke, metoda vrne False.

Skladnja:


        FSO.FolderExists(FolderName As String) As Boolean
    

Parametri:

FolderName: niz, ki predstavlja mapo, ki bo preizkušena.

Primer:


        FSO.FolderNaming = "SYS"
        If FSO.FolderExists("C:\Documents\Thesis") Then
            '...
        End If
    

GetBaseName

Vrne osnovo BaseName (enako zadnji komponenti) imena mape ali datoteke, brez končnice.

Metoda ne preverja, če podana datoteka ali mapa obstaja.

Skladnja:


        FSO.GetBaseName(FileName As String) As String
    

Parametri:

FileName: niz, ki predstavlja ime datoteke in njeno pot.

Primer:


        ' Če je vhodni parameter mapa, vrne zadnjo komponento poti
        MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
        ' Če je vhodni parameter datoteka, metoda vrne ime datoteke brez končnice in poti
        MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"
    

GetExtension

Vrne končnico datoteke ali imena mape, brez znaka za piko (".").

Metoda ne preverja obstoja navedene datoteke ali mape.

Če to metodo uporabite za ime mape ali datoteke brez končnice, vrne prazen niz.

Skladnja:


        FSO.GetExtension(FileName As String) As String
    

Parametri:

FileName: niz, ki predstavlja ime datoteke in njeno pot.

Primer:


        FSO.FileNaming = "SYS"
        MsgBox FSO.GetExtension("C:\Windows\Notepad.exe")  ' "exe"
    

GetFileLen

Vgrajena funkcija Basica FileLen vrne število bajtov, vsebovanih v datoteki kot vrednost Long, t.j. do 2 GB.

Metoda GetFileLen lahko ravna z veliko večjimi datotekami, saj vrne vrednost Currency.

Skladnja:


        FSO.GetFileLen(FileName As String) As Currency
    

Parametri:

FileName: niz, ki predstavlja obstoječo datoteko.

Primer:


        Dim a As Currency
        FSO.FileNaming = "SYS"
        a = FSO.GetFileLen("C:\pagefile.sys")
    

GetFileModified

Vrne datum zadnje spremembe dane datoteke.

Skladnja:


        FSO.GetFileModified(FileName As String) As Date
    

Parametri:

FileName: niz, ki predstavlja obstoječo datoteko.

Primer:


        Dim a As Date
        FSO.FileNaming = "SYS"
        a = FSO.GetFileModified("C:\Documents\my_file.odt")
    

GetName

Vrne zadnjo komponento imena datoteke ali mape v domorodnem zapisu operacijskega sistema.

Metoda ne preverja, če podana datoteka ali mapa obstaja.

Skladnja:


        FSO.GetName(FileName As String) As String
    

Parametri:

FileName: niz, ki predstavlja ime datoteke in njeno pot.

Primer:


        Dim a As String
        FSO.FileNaming = "SYS"
        a = FSO.GetName("C:\Windows\Notepad.exe"  ' Notepad.exe
    

GetParentFolderName

Vrne niz, ki vsebuje ime nadrejene mape z imenom navedene datoteke ali mape.

Metoda ne preverja, če podana datoteka ali mapa obstaja.

Skladnja:


        FSO.GetParentFolderName(FileName As String) As String
    

Parametri:

FileName: niz z imenom datoteke ali mape, ki bo analizirana.

Primer:


        Dim a As String
        FSO.FileNaming = "SYS"
        a = FSO.GetParentFolderName("C:\Windows\Notepad.exe"  ' C:\Windows\
    

GetTempName

Vrne naključno izdelano ime začasne mape, ki je uporabno za izvajanje operacij, ki zahtevajo začasno mapo.

Vrnjeno ime datoteke nima pripon. Del vrnjenega niza za mapo je začasna sistemska mapa.

Metode ne ustvari začasne datoteke.

Skladnja:


        FSO.GetTempName() As String
    

Primer:


        Dim a As String
        FSO.FolderNaming = "SYS"
        a = FSO.GetTempName() & ".txt"
        ' "/tmp/SF_574068.txt"
    

HashFile

Zgoščevalne funkcije se uporabljajo v kriptografskih algoritmih, za digitalne podpise, overitvene kode sporočil, zaznavanje prevar, prstne odtise, kontrolne vsote (preverjanje integritete sporočil), tabele zgoščenih vrednosti, hrambo gesel in še mnogo drugega.

Metoda HashFile vrne rezultat zgoščevalne funkcije, izvedene na podani datoteki z uporabo navedenega algoritma. Vrnjena vrednost je niz s šestnajstiškimi števkami, zapisanimi z malimi črkami.

Podprti algoritmi zgoščevalne funkcije so: MD5, SHA1, SHA224, SHA256, SHA384 in SHA512.

Skladnja:


        FSO.HashFile(FileName As String, Algorithm As String) As String
    

Parametri:

FileName: niz, ki predstavlja obstoječo datoteko.

Algorithm: eden od podprtih algoritmov.

Primer:


        FSO.FileNaming = "SYS"
        MsgBox FSO.HashFile("C:\pagefile.sys", "MD5")
    

MoveFile

Premakne eno ali več datotek z enega mesta na drugega. Vrne True, če je premaknjena vsaj ena datoteka, ali False, če do napake ni prišlo.

Do napake pride tudi, če parameter Source uporablja nadomestne znake in se z iskanim vzorcem ne ujema nobena datoteka.

Metoda se ustavi nemudoma, ko naleti na napako. Metoda se ne povrne niti ne razveljavi spremembe, opravljene pred nastopom napake.

Skladnja:


        FSO.MoveFile(Source As String, Destination As String) As Boolean
    

Parametri:

Source: lahko je FileName (ime datoteke) ali NamePattern (vzorec imena), ki določa eno ali več datotek, ki jih želite premakniti.

Destination: če je Source ime datoteke (FileName), potem ta parameter nakazuje novo pot in ime datoteke premaknjene datoteke.

Če operacija premika vključuje več datotek, potem mora biti Destination ime mape. Če še ne obstaja, se ustvari.

Če imata Source in Destination isto nadrejeno mapo, bo metoda preimenovala Source.

Nadomestni znaki niso dovoljeni v Destination.

Primer:


        Dim a As String
        FSO.FileNaming = "SYS"
        FSO.MoveFile("C:\Temp1\*.*", "C:\Temp2\")
        ' Premaknejo se le datoteke, podmape ne
    

MoveFolder

Premakne eno ali več map z enega mesta na drugo. Vrne True, če je premaknjena vsaj ena mapa, oz. False, če nastopi napaka.

Do napake pride tudi, če parameter Source uporablja nadomestne znake in se z iskanim vzorcem ne ujema nobena mapa.

Metoda se ustavi nemudoma, ko naleti na napako. Metoda se ne povrne niti ne razveljavi spremembe, opravljene pred nastopom napake.

Skladnja:


        FSO.MoveFolder(Source As String, Destination As String) As Boolean
    

Parametri:

Source: lahko je FolderName (ime mape) ali NamePattern (vzorec imena), ki določa eno ali več map, ki jih želite premakniti.

Destination: Če operacija premika vključuje eno samo mapo, potem je Destination ime in pot premaknjene mape in še ne sme obstajati.

Če premikate več map, Destination določa, kam bodo mape v Source premaknjene. Če Destination ne obstaja, bo ustvarjena.

Nadomestni znaki niso dovoljeni v Destination.

Primer:


        Dim a As String
        FSO.FileNaming = "SYS"
        FSO.MoveFolder("C:\Temp1\*", "C:\Temp2\")
    

OpenTextFile

Odpre datoteko in vrne predmet TextStream, ki ga lahko uporabite za ranje, zapisovanje ali dopisovanje v datoteko.

Upoštevajte, da metoda ne preverja, če je podana datoteka besedilna datoteka.

Metoda vrne predmet Null, če je prišlo do napake.

Skladnja:


        FSO.OpenTextFile(FileName As String, [IOMode As Integer], [Create As Boolean], [Encoding As String]) As Object
    

Parametri:

FileName: ime datoteke, ki jo želite odpreti.

IOMode: vhodno/izhodni način. Lahko je ena od treh konstant: FSO.ForReading (privzeto), FSO.ForWriting ali FSO.ForAppending.

Create: logična vrednost, ki določa, če naj bo ustvarjena nova datoteka, če datoteka z navedenim imenom ne obstaja.

Encoding: nabor znakov, ki naj bo uporabljen. Privzeta kodiranje je »UTF-8«.

Primer:


        Dim myFile As Object
        FSO.FileNaming = "SYS"
        Set myFile = FSO.OpenTextFile("C:\Temp\ThisFile.txt", FSO.ForReading)
        If Not IsNull(myFile) Then
            ' ...
        End If
    

PickFile

Odpre pogovorno okno za odpiranje oz. shranjevanje datotek.

Če je nastavljen način SAVE in izbrana datoteka obstaja, se prikaže opozorilno sporočilo.

Skladnja:


      FSO.PickFile([DefaultFile As String], [Mode As String], [Filter As String]) As String
    

Parametri:

DefaultFile: ta argument je niz, sestavljen iz imena mape in imena datoteke:

Mode: OPEN (vhodna datoteka) ali SAVE (izhodna datoteka). Privzeta vrednost jeOPEN.

Filter: končnica prikazanih datotek, ko se odpre pogovorno okno (privzeto = brez filtra).

Primer:


        Dim a As Variant
        FSO.FileNaming = "SYS"
        a = FSO.PickFile("C:\", "OPEN", "txt")
        ' Prikazane so le datoteke *.txt
    

PickFolder

Odpre pogovorno okno za izbor mape.

Skladnja:


        FSO.PickFolder([DefaultFolder As String], [FreeText As String]) As String
    

Parametri:

DefaultFolder: niz vsebuje ime mape, ki bo prikazana, ko se odpre pogovorno okno (privzeto = nazadnje izbrana mapa).

FreeText: besedilo, ki bo prikazano v pogovornem oknu (privzeto = "").

Primer:


        Dim a As Variant
        FSO.FileNaming = "SYS"
        a = FSO.PickFolder("C:\", "Izberite mapo ali pritisnite Prekliči")
    

SubFolders

Vrne ničelno polje map, shranjenih v dani mapi FolderName.

Seznam lahko filtrirate z nadomestnimi znaki.

Skladnja:


        FSO.SubFolders(FolderName As String, [Filter As String]) As Variant
    

Parametri:

FolderName: niz, ki predstavlja mapo. Mapa mora obstajati. FolderName ne sme opredeljevati datoteke.

Filter: niz, ki vsebuje nadomestne znake ("?" in "*"), ki bodo uporabljeni za seznam map kot rezultatu (privzeto = "").

Primer:


        Dim folderList As Variant, folder As String
        FSO.FileNaming = "SYS"
        folderList = FSO.SubFolders("/home/user/")
        For Each folder In folderList
            ' ...
        Next folder
    
warning

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.


Podprite nas!