Spis treści

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

- Sprawdź, czy plik lub folder istnieje.

- Twórz i usuwaj foldery oraz pliki.

- Uruchom okna dialogowe, aby otworzyć/zapisać pliki.

- Uzyskaj dostęp do listy plików w folderze itp.

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

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.

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.

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:

- Nie można tworzyć plików w folderze głównym. Użyj istniejących podfolderów lub utwórz nowe foldery do przechowywania plików w systemie plików dokumentu.

- Notacja FileNaming jest zawsze uważana za „URL”.

- Metody CompareFiles, GetFileModified, HashFile, PickFile i PickFolder nie mają zastosowania.

- Metoda GetFileLen zawsze zwraca zero.

- Metoda Normalize zawsze zwraca ciąg wejściowy w niezmienionej postaci.

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

- Jeśli destination nie istnieje, zostanie utworzone.

- Znaki wieloznaczne nie są dozwolone w destination.

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)

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.

- Jeśli destination nie istnieje, zostanie utworzone.

- Znaki wieloznaczne nie są dozwolone w destination.

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)

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

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

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ę zerową (BASIC) lub krotkę (Python) plików przechowywanych w danym folderze. Każdy wpis w tablicy lub krotce jest ciągiem 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 "\".

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:

- Jeśli True, zostanie utworzony nowy plik i jego foldery nadrzędne, jeśli nie istnieją.

- Jeśli False to nowe pliki nie są tworzone (domyślnie).

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:

- Część folderu wskazuje folder, który zostanie wyświetlony po otwarciu okna dialogowego (domyślnie = ostatnio wybrany folder).

- Część plikowa wyznacza domyślny plik do otwarcia lub zapisania.

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

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.

Tematy pokrewne

Usługa ScriptForge.TextStream

Funkcja Input [VBA]

Instrukcja Open