Usługa ScriptForge.FileSystem

Usługa FileSystem zawiera procedury do obsługi plików i folderów. Poniżej znajduje się kilka przykładów funkcji udostępnianych przez tę usługę:

note

Metody w usłudze FileSystem opierają się głównie na interfejsie UNO XSimpleFileAccess.


Definicje

Poniższa tabela zawiera listę głównych parametrów używanych przez większość metod usługi FileSystem.

Parametr

Opis

FileName

Pełna nazwa pliku, łącznie ze ścieżką bez separatora ścieżki na końcu.

FolderName

Pełna nazwa folderu wraz ze ścieżką. Może zawierać końcowy separator ścieżki lub nie.

Name

Ostatni składnik Nazwa folderu lub Nazwa pliku łącznie z jego rozszerzeniem. Ten parametr jest zawsze wyrażany przy użyciu natywnego formatu systemu operacyjnego.

BaseName

Ostatni składnik Nazwy folderu lub Nazwy pliku bez rozszerzenia.

NamePattern

Dowolna z powyższych nazw zawierająca w ostatnim elemencie symbole wieloznaczne. Dozwolone symbole wieloznaczne to:

  • "?" reprezentuje dowolny pojedynczy znak

  • "*" reprezentuje zero, jeden lub wiele znaków


tip

Usługa FileSystem umożliwia wykonywanie operacji na wielu plikach jednocześnie. Używając wzorców nazw, skrypty użytkownika mogą kopiować, przenosić lub usuwać wiele plików. I odwrotnie, metody wbudowane Basic mogą obsługiwać tylko pojedyncze pliki.


Notacja nazewnictwa plików

Notacja używana do wyrażania nazw plików i folderów, zarówno jako argumentów, jak i zwracanych wartości, jest definiowana przez właściwość FileNaming usługi FileSystem.

Krótko mówiąc, możliwe typy reprezentacji to „URL” (notacja pliku URL), „SYS” (notacja systemu operacyjnego) i „ANY” (domyślnie). Więcej informacji znajdziesz poniżej.

tip

Przykładem zapisu adresu URL jest file:///C:/Documents/my_file.odt. Jeśli to możliwe, rozważ użycie zapisu adresu URL, ponieważ jest to bardziej przenośna alternatywa.


warning

Użycie skrótu „~” (tylda), które jest powszechne w systemach operacyjnych opartych na systemie Linux, nie jest obsługiwane w celu wyrażenia ścieżki do folderu i nazwy pliku. Zamiast używać „~/Documents/my_file.odt” użyj pełnej ścieżki „/home/user/Documents/my_file.odt”.


Wywoływanie usługi

Poniższy fragment kodu wywołuje usługę FileSystem. Jako przykład wykorzystano metodę BuildPath.

W języku Basic

      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim FSO As Object
      Set FSO = CreateScriptService("FileSystem")
      FSO.BuildPath(...)
    
W języku Python

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

Dostęp do wirtualnego systemu plików dokumentu

Pliki dokumentów LibreOffice to skompresowane pliki ZIP zawierające pliki i foldery reprezentujące rzeczywistą zawartość dokumentu. Gdy dokument jest otwarty, można uzyskać dostęp do tego wirtualnego systemu plików, poznać jego strukturę, a także czytać i tworzyć pliki oraz foldery.

Poniższy przykład pokazuje, jak utworzyć plik tekstowy o nazwie myFile.txt i zapisać go w wirtualnym systemie plików dokumentu.

W języku Basic

    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)
    ' Pobiera notację ścieżki URL do katalogu głównego wirtualnego systemu plików
    sRoot = oDoc.FileSystem()
    sMyDir = sRoot & "myDir"
    ' Tworzy folder „myDir”, jeśli nie istnieje
    If Not fso.FolderExists(sMyDir) Then
        fso.CreateFolder(sMyDir)
    End If
    ' Tworzy plik i zapisuje w nim trochę tekstu
    sFile = fso.BuildPath(sMyDir, "myFile.txt")
    oFile = fso.CreateTextFile(sFile)
    oFile.WriteLine("Hello!")
    oFile.CloseFile()
  
W języku Python

    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()
  

Ogólnie rzecz biorąc, wszystkie metody usługi FileSystem mogą być używane do manipulowania plikami w wirtualnym systemie plików dokumentu. Obowiązują jednak następujące ograniczenia:

note

Ścieżka do wirtualnego systemu plików nie jest adresem fizycznym na dysku twardym komputera. Dostęp do niego można uzyskać wyłącznie ze skryptu LibreOffice i istnieje on tylko wtedy, gdy plik dokumentu jest otwarty.


Właściwości

Nazwa

Tylko do odczytu

Typ

Opis

FileNaming

Nie

String

Ustawia lub zwraca bieżącą notację plików i folderów "ANY", "URL" lub "SYS":

  • "ANY": (domyślnie) metody usługi FileSystem akceptują jako argumenty wejściowe zarówno adres URL, jak i notację bieżącego systemu operacyjnego, ale zawsze zwracają ciągi adresów URL.

  • "URL": metody usługi FileSystem oczekują zapisu adresu URL dla argumentów wejściowych i zwrotnych ciągów adresu URL.

  • "SYS": metody usługi FileSystem oczekują notacji bieżącego systemu operacyjnego zarówno dla argumentów wejściowych, jak i ciągów zwracanych.

Raz ustawiona właściwość FileNaming pozostaje niezmieniona do końca sesji LibreOffice lub do ponownego ustawienia.

ConfigFolder

Tak

String

Zwraca folder konfiguracyjny LibreOffice.

ExtensionsFolder

Tak

String

Zwraca folder, w którym zainstalowane są rozszerzenia.

HomeFolder

Tak

String

Zwraca folder domowy użytkownika.

InstallFolder

Tak

String

Zwraca folder instalacyjny LibreOffice.

TemplatesFolder

Tak

String

Zwraca folder zawierający pliki szablonów systemowych.

TemporaryFolder

Tak

String

Zwraca folder plików tymczasowych zdefiniowany w ustawieniach ścieżki LibreOffice.

UserTemplatesFolder

Tak

String

Zwraca folder zawierający pliki niestandardowych szablonów dokumentów.


Lista metod w usłudze 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

Łączy ścieżkę folderu z nazwą pliku i zwraca pełną nazwę pliku z prawidłowym separatorem ścieżki. Separator ścieżki jest dodawany tylko w razie potrzeby.

Składnia:

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

Parametry:

foldername: ścieżka, z którą name zostanie połączony. Określona ścieżka nie musi być istniejącym folderem.

name: nazwa pliku, który ma zostać dołączony do foldername. Ten parametr wykorzystuje notację bieżącego systemu operacyjnego.

Przykład:

W języku Basic

      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
    
W języku Python

      fs = CreateScriptService("FileSystem")
      fs.FileNaming = "URL"
      aFileName = fs.BuildPath("file:///home/user", "sample file.odt")
      # file:///home/user/sample%20file.odt
    

CompareFiles

Porównuje dwa pliki i zwraca wartość True, gdy wydają się identyczne.

W zależności od wartości argumentu comparecontents porównanie obu plików może opierać się wyłącznie na atrybutach pliku (takich jak data ostatniej modyfikacji) lub na podstawie zawartości pliku.

Składnia:

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

Parametry:

filename1, filename2: pliki do porównania.

comparecontents: Gdy True, porównywana jest zawartość plików (domyślnie = False).

Przykład:

W języku Basic

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

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

CopyFile

Kopiuje jeden lub więcej plików z jednej lokalizacji do drugiej. Zwraca wartość True, jeśli co najmniej jeden plik został skopiowany, lub False, jeśli wystąpił błąd.

Błąd wystąpi również, jeśli parametr source używa znaków wieloznacznych i nie pasuje do żadnego pliku.

Metoda zatrzymuje się natychmiast po napotkaniu błędu. Metoda nie wycofuje zmian ani nie cofa zmian wprowadzonych przed wystąpieniem błędu.

Składnia:

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

Parametry:

source: może to być FileName lub NamePattern wskazujący jeden lub więcej plików do skopiowania.

destination: może to być FileName określający, gdzie ma zostać skopiowany pojedynczy plik source, lub FolderName, do którego ma zostać skopiowanych wiele plików z source.

overwrite: jeśli True (domyślnie), pliki mogą zostać nadpisane. Metoda nie powiedzie się, jeśli destination jest tylko do odczytu, niezależnie od wartości określonej w overwrite.

Przykład:

W poniższych przykładach pierwszy wiersz kopiuje pojedynczy plik, podczas gdy drugi wiersz kopiuje wiele plików za pomocą symboli wieloznacznych.

W języku Basic

      FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
      FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)
    
W języku Python

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

Należy pamiętać, że podfoldery i ich zawartość nie są kopiowane, jeśli w argumencie source użyto symboli wieloznacznych.


CopyFolder

Kopiuje jeden lub więcej folderów z jednej lokalizacji do drugiej. Zwraca wartość True, jeśli skopiowano co najmniej jeden folder, lub False, jeśli wystąpił błąd.

Błąd wystąpi również, jeśli parametr source używa znaków wieloznacznych i nie pasuje do żadnego folderu.

Metoda zatrzymuje się natychmiast po napotkaniu błędu. Metoda nie wycofuje zmian ani nie cofa zmian wprowadzonych przed wystąpieniem błędu.

Składnia:

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

Parametry:

source: może to być FolderName lub NamePattern wskazujący jeden lub więcej folderów do skopiowania.

destination: określa FolderName, do którego mają zostać skopiowane jeden lub wiele folderów zdefiniowanych w source.

overwrite: jeśli True (domyślnie), pliki mogą zostać nadpisane. Metoda nie powiedzie się, jeśli destination jest tylko do odczytu, niezależnie od wartości określonej w overwrite.

Przykład:

W poniższych przykładach kopiowane są wszystkie pliki, foldery i podfoldery.


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

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

CreateFolder

Tworzy określony FolderName. Zwraca True, jeśli folder mógł zostać pomyślnie utworzony.

Jeśli określony folder ma folder nadrzędny, który nie istnieje, zostanie on utworzony.

Składnia:

svc.CreateFolder(foldername: str): bool

Parametry:

foldername: ciąg reprezentujący folder, który ma zostać utworzony. Jeśli folder już istnieje, zostanie zgłoszony wyjątek.

Przykład:


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

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

CreateTextFile

Tworzy określony plik i zwraca instancję usługi TextStream, która może być użyta do zapisu w pliku.

Metoda zwraca obiekt Null, jeśli wystąpił błąd.

Składnia:

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

Parametry:

filename: nazwa pliku, który ma zostać utworzony.

overwrite: wartość logiczna określająca, czy filename może zostać nadpisana (domyślnie = True).

encoding: zestaw znaków, który ma być używany. Domyślne kodowanie to „UTF-8”.

Przykład:

W języku Basic

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

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

Aby dowiedzieć się więcej o nazwach zestawów znaków, odwiedź stronę Zestaw znaków IANA. Należy pamiętać, że LibreOffice nie implementuje wszystkich istniejących zestawów znaków.


DeleteFile

Usuwa jeden lub więcej plików. Zwraca True, jeśli co najmniej jeden plik został usunięty, lub False, jeśli wystąpił błąd.

Błąd wystąpi również, jeśli parametr filename używa znaków wieloznacznych i nie pasuje do żadnego pliku.

Pliki przeznaczone do usunięcia nie mogą być przeznaczone tylko do odczytu.

Metoda zatrzymuje się natychmiast po napotkaniu błędu. Metoda nie wycofuje zmian ani nie cofa zmian wprowadzonych przed wystąpieniem błędu.

Składnia:

svc.DeleteFile(filename: str): bool

Parametry:

filename: może to być FileName lub NamePattern wskazująca jeden lub więcej plików do usunięcia.

Przykład:

W poniższych przykładach usuwane są tylko pliki, podfoldery nie są usuwane.


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

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

DeleteFolder

Usuwa jeden lub więcej folderów. Zwraca wartość True, jeśli co najmniej jeden folder został usunięty, lub False, jeśli wystąpił błąd.

Błąd wystąpi również, jeśli parametr foldername używa znaków wieloznacznych i nie pasuje do żadnego folderu.

Foldery, które mają zostać usunięte, nie mogą być przeznaczone tylko do odczytu.

Metoda zatrzymuje się natychmiast po napotkaniu błędu. Metoda nie wycofuje zmian ani nie cofa zmian wprowadzonych przed wystąpieniem błędu.

Składnia:

svc.DeleteFolder(foldername: str): bool

Parametry:

foldername: może to być FolderName lub NamePattern wskazujący jeden lub więcej folderów do usunięcia.

Przykład:

W poniższych przykładach usuwane są tylko foldery i ich zawartość. Pliki w folderze nadrzędnym „C:\Temp” nie są usuwane.


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

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

ExtensionFolder

Zwraca ciąg znaków zawierający folder, w którym jest zainstalowany określony pakiet rozszerzeń.

note

Bieżąca wartość właściwości SF_FileSystem.FileNaming służy do określenia zapisu zwracanego ciągu.


tip

Użyj właściwości Rozszerzenia z usługi Platform, aby uzyskać tablicę ciągów z identyfikatorami wszystkich zainstalowanych rozszerzeń.


Składnia:

svc.ExtensionFolder(extension: str): str

Parametry:

extension: wartość ciągu z identyfikatorem rozszerzenia. Jeśli rozszerzenie nie jest zainstalowane, zgłaszany jest wyjątek.

Przykład:

Poniższe przykłady w języku Basic i Python zwracają folder, w którym zainstalowane jest rozszerzenie 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

Zwraca True, jeśli dana nazwa pliku jest poprawna i istnieje, w przeciwnym razie metoda zwraca False.

Jeśli parametr filename jest w rzeczywistości nazwą istniejącego folderu, metoda zwraca wartość False.

Składnia:

svc.FileExists(filename: str): bool

Parametry:

filename: ciąg reprezentujący plik do przetestowania.

Przykład:

W języku Basic

      FSO.FileNaming = "SYS"
      If FSO.FileExists("C:\Documents\my_file.odt") Then
          '...
      End If
    
W języku Python

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

Files

Zwraca tablicę liczoną od zera zawierającą pliki przechowywane w danym folderze. Każdy wpis w tablicy jest ciągiem znaków zawierającym pełną ścieżkę i nazwę pliku.

Jeśli argument foldername określa folder, który nie istnieje, zgłaszany jest wyjątek.

Otrzymaną listę można filtrować za pomocą symboli wieloznacznych.

Składnia:

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

Parametry:

foldername: ciąg reprezentujący folder. Folder musi istnieć. Argument ten nie może oznaczać pliku.

filter: ciąg znaków zawierający symbole wieloznaczne ("?" i "*"), który zostanie zastosowany do wynikowej listy plików (domyślnie = "").

includesubfolders: ustaw ten argument na True, aby uwzględnić zawartość podfolderów (domyślnie = False).

Przykład:

W języku Basic

      Dim filesList As Variant, file As String
      FSO.FileNaming = "SYS"
      ' Zwraca wszystkie pliki pasujące do filtra "*.txt", łącznie z plikami w podfolderach
      filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
      For Each file In filesList
          ' ...
      Next file
    
W języku Python

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

FolderExists

Zwraca True, jeśli określona FolderName jest poprawna i istnieje, w przeciwnym razie metoda zwraca False.

Jeśli parametr foldername jest w rzeczywistości istniejącą nazwą pliku, metoda zwraca wartość False.

Składnia:

svc.FolderExists(foldername: str): bool

Parametry:

foldername: ciąg reprezentujący folder, który ma zostać przetestowany.

Przykład:

W języku Basic

      FSO.FileNaming = "SYS"
      If FSO.FolderExists("C:\Documents\Thesis") Then
          '...
      End If
    
W języku Python

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

GetBaseName

Zwraca BaseName (równą ostatniemu składnikowi) nazwy folderu lub pliku, bez jego rozszerzenia.

Metoda nie sprawdza, czy określony plik lub folder istnieje.

Składnia:

svc.GetBaseName(filename: str): str

Parametry:

filename: ciąg reprezentujący nazwę pliku i jego ścieżkę.

Przykład:

W poniższych przykładach pierwsze wywołanie metody GetBaseName odpowiada folderowi, więc funkcja zwraca ostatni składnik ścieżki. Drugie wywołanie jako dane wejściowe otrzymuje nazwę pliku, więc zwracana jest nazwa pliku bez rozszerzenia.

W języku Basic

      MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
      MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"
    
W języku Python

      bas = CreateScriptService("Basic")
      bas.MsgBox(fs.GetBaseName("/home/user/Documents")) # "Documents"
      bas.MsgBox(fs.GetBaseName("/home/user/Documents/my_file.ods")) # "my_file"
    

GetExtension

Zwraca część rozszerzenia nazwy pliku lub folderu bez znaku kropki ".".

Metoda nie sprawdza istnienia określonego pliku lub folderu.

Jeśli tę metodę zastosuje się do nazwy folderu lub pliku bez rozszerzenia, zwracany jest pusty ciąg znaków.

Składnia:

svc.GetExtension(filename: str): str

Parametry:

filename: ciąg reprezentujący nazwę pliku i jego ścieżkę.

Przykład:


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

      # Python
      ext = fs.GetExtension(r"C:\Windows\Notepad.exe")  # "exe"
    

GetFileLen

Wbudowana funkcja Basic FileLen zwraca liczbę bajtów zawartych w pliku jako wartość Long, czyli do 2 GB.

Metoda GetFileLen może obsłużyć pliki o znacznie większych rozmiarach, zwracając wartość Currency.

Składnia:

svc.GetFileLen(filename: str): num

Parametry:

filename: ciąg reprezentujący istniejący plik.

Przykład:

W języku Basic

      Dim fLen As Currency
      FSO.FileNaming = "SYS"
      fLen = FSO.GetFileLen("C:\pagefile.sys")
    
W języku Python

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

GetFileModified

Zwraca datę ostatniej modyfikacji danego pliku.

Składnia:

svc.GetFileModified(filename: str): datetime

Parametry:

filename: ciąg reprezentujący istniejący plik.

Przykład:

W języku Basic

      Dim aDate As Date
      FSO.FileNaming = "SYS"
      aDate = FSO.GetFileModified("C:\Documents\my_file.odt")
    
W języku Python

      fs.FileNaming = "SYS"
      aDate = FSO.GetFileModified(r"C:\Documents\my_file.odt")
    

GetName

Zwraca ostatni składnik nazwy pliku lub folderu w natywnym formacie systemu operacyjnego.

Metoda nie sprawdza, czy określony plik lub folder istnieje.

Składnia:

svc.GetName(filename: str): str

Parametry:

filename: ciąg reprezentujący nazwę pliku i jego ścieżkę.

Przykład:


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

      # Python
      a = fs.GetName(r"C:\Windows\Notepad.exe")  # Notepad.exe
    

GetParentFolderName

Zwraca ciąg zawierający nazwę folderu nadrzędnego dla określonego pliku lub nazwy folderu.

Metoda nie sprawdza, czy określony plik lub folder istnieje.

Składnia:

svc.GetParentFolderName(filename: str): str

Parametry:

filename: ciąg znaków zawierający nazwę pliku lub folderu, który ma być analizowany.

Przykład:


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

      # Python
      a = fs.GetParentFolderName(r"C:\Windows\Notepad.exe")  # C:\Windows\
    

GetTempName

Zwraca losowo wygenerowaną nazwę pliku tymczasowego, która jest przydatna do wykonywania operacji wymagających pliku tymczasowego.

Domyślnie zwrócona nazwa pliku nie ma rozszerzenia. Użyj parametru extension, aby określić rozszerzenie nazwy pliku, który ma zostać wygenerowany.

Część folderu zwróconego ciągu jest folderem tymczasowym systemu.

Metoda nie tworzy pliku tymczasowego.

Składnia:

svc.GetTempName(extension: str): str

Parametry:

extension: rozszerzenie nazwy pliku tymczasowego (domyślnie = "").

Przykład:

W języku Basic

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

      fs.FileNaming = "SYS"
      fName = FSO.GetTempName(extension = "txt")
      # "/tmp/SF_574068.txt"
    

HashFile

Funkcje skrótu są wykorzystywane przez niektóre algorytmy kryptograficzne w podpisach cyfrowych, kodach uwierzytelniających wiadomości, wykrywaniu oszustw, odciskach palców, sumach kontrolnych (sprawdzanie integralności wiadomości), tabelach skrótów, przechowywaniu haseł i wielu innych.

Metoda HashFile zwraca wynik funkcji skrótu zastosowanej do danego pliku i przy użyciu określonego algorytmu. Zwracana wartość jest ciągiem małych cyfr szesnastkowych.

Obsługiwane algorytmy mieszające to: MD5, SHA1, SHA224, SHA256, SHA384 i SHA512.

Składnia:

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

Parametry:

filename: ciąg reprezentujący istniejący plik.

algorithm: jeden z obsługiwanych algorytmów.

Przykład:


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

      # Python
      sHash = FSO.HashFile(r"C:\pagefile.sys", "MD5")
    

MoveFile

Przenosi jeden lub więcej plików z jednej lokalizacji do drugiej. Zwraca True, jeśli co najmniej jeden plik został przeniesiony, lub False, jeśli wystąpił błąd.

Błąd wystąpi również, jeśli parametr source używa znaków wieloznacznych i nie pasuje do żadnego pliku.

Metoda zatrzymuje się natychmiast po napotkaniu błędu. Metoda nie wycofuje zmian ani nie cofa zmian wprowadzonych przed wystąpieniem błędu.

Składnia:

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

Parametry:

source: może to być FileName lub NamePattern, aby wyznaczyć jeden lub więcej plików do przeniesienia.

destination: jeśli source jest FileName, wówczas ten parametr wskazuje nową ścieżkę i nazwę przenoszonego pliku.

Jeśli operacja przenoszenia obejmuje wiele plików, wówczas destination musi być nazwą folderu. Jeśli czegoś nie ma, zostaje on stworzony.

Jeśli source i destination mają ten sam folder nadrzędny, metoda zmieni nazwę source.

Znaki wieloznaczne nie są dozwolone w destination.

Przykład:

W poniższych przykładach przenoszone są tylko pliki, podfoldery nie.


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

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

MoveFolder

Przenosi jeden lub więcej folderów z jednej lokalizacji do drugiej. Zwraca wartość True, jeśli co najmniej jeden folder został przeniesiony, lub False, jeśli wystąpił błąd.

Błąd wystąpi również, jeśli parametr source używa znaków wieloznacznych i nie pasuje do żadnego folderu.

Metoda zatrzymuje się natychmiast po napotkaniu błędu. Metoda nie wycofuje zmian ani nie cofa zmian wprowadzonych przed wystąpieniem błędu.

Składnia:

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

Parametry:

source: może to być FolderName lub NamePattern, aby wyznaczyć jeden lub więcej folderów do przeniesienia.

destination: jeśli operacja przenoszenia dotyczy pojedynczego folderu, wówczas destination to nazwa i ścieżka przenoszonego folderu, który nie może istnieć.

Jeśli przenoszonych jest wiele folderów, destination wyznacza miejsce, do którego zostaną przeniesione foldery z source. Jeśli destination nie istnieje, zostanie utworzone.

Znaki wieloznaczne nie są dozwolone w destination.

Przykład:


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

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

Normalize

Zwraca ciąg zawierający znormalizowaną nazwę ścieżki poprzez zwinięcie zbędnych separatorów i odwołań wyższego poziomu.

Na przykład nazwy ścieżek A//B, A/B/, A/./B i A/foo/../B są znormalizowane do A/B.

W systemie Windows ukośniki "/" są konwertowane na ukośniki wsteczne "\".

note

Bieżąca wartość właściwości SF_FileSystem.FileNaming służy do określenia zapisu argumentu filename oraz formatu zwracanego ciągu.


Składnia:

svc.Normalize(filename: str): str

Parametry:

filename: ciąg znaków reprezentujący prawidłową nazwę ścieżki. Plik lub katalog reprezentowany przez ten argument może nie istnieć.

Przykład:

W języku Basic

    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/../")
  
W języku Python

    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

Otwiera plik i zwraca obiekt TextStream, który można użyć do odczytu, zapisu lub dołączenia do pliku.

Należy pamiętać, że metoda nie sprawdza, czy podany plik jest rzeczywiście plikiem tekstowym.

Metoda zwraca obiekt Null (w języku Basic) lub None (w języku Python), jeśli wystąpił błąd.

Składnia:

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

Parametry:

filename: identyfikuje plik do otwarcia.

iomode: wskazuje tryb wejścia/wyjścia. Może to być jedna z trzech stałych: svc.ForReading (domyślna), svc.ForWriting lub svc.ForAppending.

create: wartość logiczna wskazująca, czy można utworzyć nowy plik, jeśli określona filename nie istnieje:

encoding: zestaw znaków, który ma być używany. Domyślne kodowanie to „UTF-8”.

Przykład:

W języku Basic

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

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

PickFile

Otwiera okno dialogowe umożliwiające otwarcie lub zapisanie plików.

Jeżeli ustawiony jest tryb SAVE i wybrany plik istnieje, zostanie wyświetlony komunikat ostrzegawczy.

Składnia:

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

Parametry:

defaultfile: ten argument jest ciągiem znaków składającym się z folderu i nazwy pliku:

mode: wartość ciągu, która może mieć wartość "OPEN" (dla plików wejściowych) lub "SAVE" (dla plików wyjściowych). Wartość domyślna to "OPEN".

filter: rozszerzenie plików wyświetlane po otwarciu okna dialogowego (domyślnie = brak filtra).

Przykład:

Poniższe przykłady otwierają selektor plików z zastosowanym filtrem „txt”.


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

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

PickFolder

Otwiera okno dialogowe umożliwiające wybranie folderu.

Składnia:

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

Parametry:

defaultfolder: ciąg zawierający nazwę folderu, który zostanie wyświetlony po otwarciu okna dialogowego (domyślnie = ostatnio wybrany folder).

freetext: tekst wyświetlany w oknie dialogowym (domyślnie = "").

Przykład:


      ' Basic
      aFolder = FSO.PickFolder("C:\Dokumenty", "Wybierz folder lub naciśnij Anuluj")
    

      # Python
      aFolder = fs.PickFolder(r"C:\Dokumenty", "Wybierz folder lub naciśnij Anuluj")
    

SubFolders

Zwraca tablicę ciągów znaków liczoną od zera odpowiadającą folderom przechowywanym w danej foldername.

Listę można filtrować za pomocą symboli wieloznacznych.

Składnia:

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

Parametry:

foldername: ciąg znaków reprezentujący folder. Folder musi istnieć. foldername nie może oznaczać pliku.

filter: ciąg znaków zawierający symbole wieloznaczne ("?" and "*"), który zostanie zastosowany do wynikowej listy folderów (domyślnie = "").

includesubfolders: ustaw ten argument na True, aby uwzględnić zawartość podfolderów (domyślnie = False).

Przykład:

W języku Basic

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

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

Wszystkie podstawowe procedury lub identyfikatory ScriptForge poprzedzone znakiem podkreślenia „_” są zarezerwowane do użytku wewnętrznego. Nie należy ich używać w makrach Basic ani skryptach Pythona.


Prosimy o wsparcie!