Storitev ScriptForge.FileSystem

Vsebina

# Storitev ScriptForge.FileSystem service

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

- preverjanje, ali datoteka oz. mapa obstaja.

- ustvarjanje in brisanje map in datotek;

- odpiranje pogovornih oken za odpiranje/shranjevanje datotek;

- dostop do seznama datotek v mapi itn.

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.

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.

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.

Uporaba bližnjice »~« (tilda), ki je pogosta na operacijskih sistemih na osnovi Linuxa, ni podprta za izražanje poti do mape in imena datoteke. Namesto "~/Documents/moja_datoteka.odt" uporabite polno pot "/home/user/Documents/moja_datoteka.odt".

## Priklic storitve

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

##### V Basicu

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          Dim FSO As Object
          Set FSO = CreateScriptService("FileSystem")
          FSO.BuildPath(...)

##### V Pythonu

          from scriptforge import CreateScriptService
          fs = CreateScriptService("FileSystem")
          fs.BuildPath(...)

## Dostopanje do navideznega datotečnega sistema dokumenta

Datoteke dokumentov LibreOffice so stisnjene datoteke ZIP, ki vsebujejo datoteke in mape, ki predstavljajo dejansko vsebino dokumenta. Ko je dokument odprt, je mogoče dostopati do tega navideznega datotečnega sistema, raziskovati njegovo strukturo ter brati in ustvarjati datoteke in mape.

Naslednji primer kaže, kako lahko ustvarite besedilno datoteko myFile.txt in jo shranite v okviru navideznega datotečnega sistema dokumenta.

##### V Basicu

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim oDoc As Object, fso As Object, oFile As Object
        Dim sRoot, sFile, sMyDir
        Set fso = CreateScriptService("FileSystem")
        Set oDoc = CreateScriptService("Document", ThisComponent)
        ' Pridobi zapis poti URL do korenske mape navideznega datotečnega sistema
        sRoot = oDoc.FileSystem()
        sMyDir = sRoot & "myDir"
        ' Ustvari mapo »myDir«, če še ne obstaja
        If Not fso.FolderExists(sMyDir) Then
            fso.CreateFolder(sMyDir)
        End If
        ' Ustvari datoteko in vanjo zapiše nekaj besedila
        sFile = fso.BuildPath(sMyDir, "myFile.txt")
        oFile = fso.CreateTextFile(sFile)
        oFile.WriteLine("Hello!")
        oFile.CloseFile()

##### V Pythonu

        from scriptforge import CreateScriptService
        bas = CreateScriptService("Basic")
        doc = CreateScriptService("Document", bas.ThisComponent)
        fso = CreateScriptService("FileSystem")
        sRoot = doc.FileSystem
        sMyDir = sRoot + "myDir"
        if not fso.FolderExists(sMyDir):
            fso.CreateFolder(sMyDir)
        sFile = fso.BuildPath(sMyDir, "myFile.txt")
        oFile = fso.CreateTextFile(sFile)
        oFile.WriteLine("Hello!")
        oFile.CloseFile()

Na splošno lahko vse metode storitve FileSystem uporabite za upravljanje datotek v navideznem datotečnem sistemu dokumenta. Vendar veljajo naslednje omejitve:

- V korenski mapi ni mogoče ustvariti datotek. Za shranjevanje datotek v datotečnem sistemu dokumenta uporabite obstoječe podmape ali ustvarite nove mape.

- Notacija FileNaming je vedno pričakovana kot "URL".

- Metod CompareFiles, GetFileModified, HashFile, PickFile in PickFolder ni možno uporabiti.

- Metoda GetFileLen vedno vrne nič.

- Metoda GetFileLen vedno vrne nespremenjen vhodni niz.

Pot do navideznega datotečnega sistema ni fizični naslov na trdem disku računalnika. Do nje je mogoče dostopati samo znotraj skripta LibreOffice in obstaja samo, dokler je datoteka dokumenta odprta.

## 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 ExtensionFolder | FileExists Files FolderExists GetBaseName GetExtension GetFileLen GetFileModified GetName GetParentFolderName | GetTempName HashFile MoveFile MoveFolder Normalize 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:

svc.BuildPath(foldername: str, name: str): str

### 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:

##### V Basicu

          Dim FSO as Object
          Set FSO = CreateScriptService("FileSystem")
          Dim aFileName as String
          FSO.FileNaming = "URL"
          aFileName = FSO.BuildPath("file:///home/user", "sample file.odt")
          ' file:///home/user/sample%20file.odt

##### V Pythonu

          fs = CreateScriptService("FileSystem")
          fs.FileNaming = "URL"
          aFileName = fs.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:

svc.CompareFiles(filename1: str, filename2: str, comparecontents: bool = False): bool

### Parametri:

filename1, filename2: imena datotek za primerjavo.

comparecontents: če je True, bo vsebina datotek primerjana (privzeta vrednost je False).

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          if fs.CompareFiles(r"C:\myFile1.txt", r"C:\myFile2.txt", comparecontents = False):
              # ...

## 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:

svc.CopyFile(source: str, destination: str, overwrite: bool = True): bool

### 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.

- Če mapa destination ne obstaja, bo ustvarjena.

- Nadomestni znaki niso dovoljeni v destination.

overwrite: če je True (privzeta vrednost), je datoteke možno prepisati. Metoda spodleti, če je destination samo za branje, ne glede na vrednost overwrite.

### Primer:

V spodnjih primerih prva vrstica kopira posamezno datoteko, medtem ko druga vrstica kopira več datotek z uporabo nadomestnih znakov.

##### V Basicu

          FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
          FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)

##### V Pythonu

          fs.CopyFile(r"C:\Documents\my_file.odt", r"C:\Temp\copied_file.odt")
          fs.CopyFile(r"C:\Documents\*.*", r"C:\Temp", overwrite = False)

Pazite, da se ne kopirajo podmape in njihova vsebina, ko uporabite nadomestne znake v argumentu source.

## 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:

svc.CopyFolder(source: str, destination: str, overwrite: bool = True): bool

### 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.

- Če mapa destination ne obstaja, bo ustvarjena.

- Nadomestni znaki niso dovoljeni v destination.

overwrite: če je True (privzeta vrednost), je datoteke možno prepisati. Metoda spodleti, če je destination samo za branje, ne glede na vrednost overwrite.

### Primer:

V spodnjih primerih se kopirajo mape, njihove datoteke in njihove podmape.

          ' Basic
          FSO.CopyFolder("C:\Documents\*", "C:\Temp\", Overwrite := False)

          # Python
          fs.CopyFolder(r"C:\Documents\*", r"C:\Temp", overwrite = False)

## 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:

svc.CreateFolder(foldername: str): bool

### Parametri:

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

### Primer:

          ' Basic
          FSO.CreateFolder("C:\NewFolder")

          # Python
          fs.CreateFolder(r"C:\NewFolder")

## CreateTextFile

Ustvari navedeno datoteko in vrne instanco storitve TextStream, s katero lahko pišete v datoteko.

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

### Skladnja:

svc.CreateTextFile(filename: str, overwrite: bool = True, encoding: str = 'UTF-8'): svc

### Parametri:

filename: ime datoteke, ki naj bo ustvarjena.

overwrite: logična vrednost, ki določa, če je datoteko filename dovoljeno prepisati (privzeta vrednost je True).

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

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          myFile = fs.CreateTextFile(r"C:\Temp\ThisFile.txt", overwrite = True)

Č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:

svc.DeleteFile(filename: str): bool

### Parametri:

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

### Primer:

V spodnjih primeri se izbrišejo le datoteke, podmape ne.

          ' Basic
          FSO.DeleteFile("C:\Temp\*.docx")

          # Python
          fs.DeleteFile(r"C:\Temp\*.docx")

## 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:

svc.DeleteFolder(foldername: str): bool

### Parametri:

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

### Primer:

V spodnjih primerih so izbrisane samo mape, datoteke v vrhnji oz. nadrejeni mapi (»C:\Temp«) pač ne.

          ' Basic
          FSO.DeleteFolder("C:\Temp\*")

          # Python
          fs.DeleteFolder(r"C:\Temp\*")

## ExtensionFolder

Vrne niz, ki vsebuje mapo, v kateri je nameščen navedeni paket razširitve.

Za določitev notacije vrnjenega niza se uporabi trenutna vrednost lastnosti SF_FileSystem.FileNaming.

Uporabite lastnost Extensions v storitvi Platform, da pridobite polje nizov z vrednostmi ID za vse nameščene razširitve.

### Skladnja:

svc.ExtensionFolder(extension: str): str

### Parametri:

extension: niz, ki predstavlja ID razširitve. Če razširitev ni nameščena, prikliče izjemo.

### Primer:

Spodnja primera v Basicu in Pythonu vrneta mapo, kateri je nameščena razširitev APSO.

          ' Basic
          sFolder = FSO.ExtensionFolder("apso.python.script.organizer")
          ' file:///home/username/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu10833wz3u2i.tmp_/apso_1_2_7.oxt

          # Python
          sFolder = fs.ExtensionFolder("apso.python.script.organizer")

## 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:

svc.FileExists(filename: str): bool

### Parametri:

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

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          if fs.FileExists(r"C:\Documents\my_file.odt"):
              # ...

## Files

Vrne ničelno polje (BASIC) ali n-terico (Python) datotek, shranjenih v dani mapi. Vsak vnos v polju ali n-terici je niz, ki vsebuje polno pot in ime datoteke.

Če mapa argumenta foldername ne obstaja, prikliče napako.

Vrnjeni seznam lahko filtrirate z nadomestnimi znaki.

### Skladnja:

svc.Files(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

### Parametri:

foldername: niz, ki predstavlja mapo. Mapa mora obstajati. Ta argument ne sme opredeljevati datoteke.

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

includesubfolders: ta argument nastavite na True, da vključite vsebino podmap (privzeta vrednost je False).

### Primer:

##### V Basicu

          Dim filesList As Variant, file As String
          FSO.FileNaming = "SYS"
          ' Vrne vse datoteke, ki se ujemajo s filtrom "*.txt", vključno z datotekami iz podmap
          filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
          For Each file In filesList
              ' ...
          Next file

##### V Pythonu

          fs.FileNaming = "SYS"
          filesList = fs.Files("/home/user/", "*.txt", includesubfolders = True)
          for file in fileList:
              # ...

## 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:

svc.FolderExists(foldername: str): bool

### Parametri:

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

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          if fs.FolderExists(r"C:\Documents\Thesis")
              # ...

## GetBaseName

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

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

### Skladnja:

svc.GetBaseName(filename: str): str

### Parametri:

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

### Primer:

V spodnjih primerih se prvi klic metode GetBaseName nanaša na mapo, zato funkcija vrne zadnjo komponento poti. Drugi klic prejme na vhod ime datoteke, zato vrne ime datoteke brez njegove končnice.

##### V Basicu

          MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
          MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"

##### V Pythonu

          bas = CreateScriptService("Basic")
          bas.MsgBox(fs.GetBaseName("/home/user/Documents")) # "Documents"
          bas.MsgBox(fs.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:

svc.GetExtension(filename: str): str

### Parametri:

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

### Primer:

          ' Basic
          ext = FSO.GetExtension("C:\Windows\Notepad.exe")  ' "exe"

          # Python
          ext = fs.GetExtension(r"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:

svc.GetFileLen(filename: str): num

### Parametri:

filename: niz, ki predstavlja obstoječo datoteko.

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          fLen = fs.GetFileLen(r"C:\pagefile.sys")

## GetFileModified

Vrne datum zadnje spremembe dane datoteke.

### Skladnja:

svc.GetFileModified(filename: str): datetime

### Parametri:

filename: niz, ki predstavlja obstoječo datoteko.

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          aDate = FSO.GetFileModified(r"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:

svc.GetName(filename: str): str

### Parametri:

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

### Primer:

          ' Basic
          a = FSO.GetName("C:\Windows\Notepad.exe")  ' Notepad.exe

          # Python
          a = fs.GetName(r"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:

svc.GetParentFolderName(filename: str): str

### Parametri:

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

### Primer:

          ' Basic
          a = FSO.GetParentFolderName("C:\Windows\Notepad.exe")  ' C:\Windows\

          # Python
          a = fs.GetParentFolderName(r"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.

Privzeto ime vrnjene datoteke nima končnice. S parametrom extension določite končnico imena datoteke, ki se ustvari.

Del vrnjenega niza za mapo je začasna sistemska mapa.

Metode ne ustvari začasne datoteke.

### Skladnja:

svc.GetTempName(extension: str): str

### Parametri:

extension: končnica imena začasne datoteke (privzeta vrednost je "").

### Primer:

##### V Basicu

          Dim fName As String
          FSO.FileNaming = "SYS"
          fName = FSO.GetTempName(Extension := "txt")
          ' "/tmp/SF_574068.txt"

##### V Pythonu

          fs.FileNaming = "SYS"
          fName = FSO.GetTempName(extension = "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:

svc.HashFile(filename: str, algorithm: str): str

### Parametri:

filename: niz, ki predstavlja obstoječo datoteko.

algorithm: eden od podprtih algoritmov.

### Primer:

          ' Basic
          sHash = FSO.HashFile("C:\pagefile.sys", "MD5")

          # Python
          sHash = FSO.HashFile(r"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:

svc.MoveFile(source: str, destination: str): bool

### 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:

V naslednjih primerih se premaknejo le datoteke, podmape ne.

          ' Basic
          FSO.MoveFile("C:\Temp1\*.*", "C:\Temp2")

          # Python
          fs.MoveFile(r"C:\Temp1\*.*", r"C:\Temp2")

## 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:

svc.MoveFolder(source: str, destination: str): bool

### 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:

          ' Basic
          FSO.MoveFolder("C:\Temp1\*", "C:\Temp2")

          # Python
          fs.MoveFolder(r"C:\Temp1\*", r"C:\Temp2")

## Normalize

Vrne niz, ki vsebuje normalizirano ime poti s strnjenimi nepotrebnimi ločili in sklici na vrhnjo raven.

Primer: imena poti A//B, A/B/, A/./B in A/foo/../B so vsa normalizirana v A/B.

Na sistemih Windows se poševnice »/« pretvorijo v leve poševnice »\«.

Za določitev notacije argumenta filename in vrnjenega niza se uporabi trenutna vrednost lastnosti SF_FileSystem.FileNaming.

### Skladnja:

svc.Normalize(filename: str): str

### Parametri:

filename: niz, ki predstavlja veljavno ime poti. Datoteka ali mapa, predstavljena s tem argumentom, lahko tudi ne obstaja.

### Primer:

##### V Basicu

        FSO.FileNaming = "URL"
        ' file:///home/user/Documents
        normPath = FSO.Normalize("file:///home/user/Documents/")
        ' file:///home/user/Documents
        normPath = FSO.Normalize("file:///home//user//Documents/")
        ' file:///home/user
        normPath = FSO.Normalize("file:///home//user//Documents/../")

##### V Pythonu

        fs.FileNaming = "URL"
        normPath = fs.Normalize("file:///home/user/Documents/")
        normPath = fs.Normalize("file:///home//user//Documents/")
        normPath = fs.Normalize("file:///home//user//Documents/../")

## 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 (v Basicu) oz. None (v Pythonu), če je prišlo do napake.

### Skladnja:

svc.OpenTextFile(filename: str, iomode: int = 1, create: bool = False, encoding: str = 'UTF-8'): svc

### Parametri:

filename: ime datoteke, ki jo želite odpreti.

iomode: vhodno/izhodni način. Lahko je ena od treh konstant: svc.ForReading (privzeto, branje), svc.ForWriting (pisanje) ali svc.ForAppending (dodajanje).

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

- Če je True, bodo ustvarjene nova datoteka in njene nadrejene mape, če ne obstajajo;

- Če je False, nove datoteke niso ustvarjene (privzeto).

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

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          myFile = fs.OpenTextFile(r"C:\Temp\ThisFile.txt", fs.ForReading)
          if myFile is not None:
              # ...

## 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:

svc.PickFile(defaultfile: str ='', mode: str = 'OPEN', filter: str = ''): str

### Parametri:

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

- del z imenom mape nakazuje mapo, ki bo prikazana, ko se odpre pogovorno okno (privzeto = nazadnje izbrana mapa);

- del z imenom datoteke določa privzeto datoteko za odpiranje oz. shranjevanje.

mode: niz, ki je lahko "OPEN" (vhodna datoteka) ali "SAVE" (izhodna datoteka). Privzeta vrednost je "OPEN".

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

### Primer:

Spodnji primeri odprejo izbirnik datotek z uporabljenim filtrom »txt«.

          ' Basic
          aFile = FSO.PickFile("C:\Documents", "OPEN", "txt")

          # Python
          aFile = fs.PickFile(r"C:\Documents", "OPEN", "txt")

## PickFolder

Odpre pogovorno okno za izbor mape.

### Skladnja:

svc.PickFolder(defaultfolder: str = '', freetext: str = ''): str

### 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:

          ' Basic
          aFolder = FSO.PickFolder("C:\Documents", "Izberite mapo ali pritisnite Prekliči")

          # Python
          aFolder = fs.PickFolder(r"C:\Documents", "Izberite mapo ali pritisnite Prekliči")

## SubFolders

Vrne ničelno polje nizov, ki predstavljajo mape, shranjenih v dani mapi foldername.

Seznam lahko filtrirate z nadomestnimi znaki.

### Skladnja:

svc.SubFolders(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

### 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 = "").

includesubfolders: ta argument nastavite na True, da vključite vsebino podmap (privzeta vrednost je False).

### Primer:

##### V Basicu

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

##### V Pythonu

          fs.FileNaming = "SYS"
          folderList = fs.SubFolders("/home/user/")
          for folder in folderList:
              # ...

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

Podobne teme

Storitev ScriptForge.TextStream

Funkcija Input [VBA]

Ukaz Open

Podprite nas!