ເນື້ອໃນ

# ບໍລິການ ScriptForge.FileSystem

ບໍລິການ FileSystem ລວມມີຣູທີນຕ່າງໆເພື່ອຈັດການໄຟລ໌ ແລະ ໂຟນເດີ. ຕໍ່ໄປນີ້ແມ່ນບາງຕົວຢ່າງຂອງຄຸນສົມບັດທີ່ບໍລິການນີ້ສະໜອງໃຫ້:

- ກວດສອບວ່າໄຟລ໌ ຫຼື ໂຟນເດີມີຢູ່ແລ້ວບໍ່.

- ສ້າງ ແລະ ລຶບໂຟນເດີ ແລະ ໄຟລ໌.

- ເປີດປ່ອງຢ້ຽມໂຕ້ຕອບເພື່ອ ເປີດ/ບັນທຶກ ໄຟລ໌.

- ເຂົ້າເຖິງລາຍຊື່ໄຟລ໌ໃນໂຟນເດີ, ແລະ ອື່ນໆ.

ວິທີການຕ່າງໆໃນບໍລິການ FileSystem ສ່ວນໃຫຍ່ແມ່ນອີງຕາມ ອິນເຕີເຟດ UNO XSimpleFileAccess.

## ຄຳນິຍາມ

ຕາຕະລາງລຸ່ມນີ້ລະບຸພາລາມິເຕີຫຼັກທີ່ໃຊ້ໂດຍວິທີການສ່ວນໃຫຍ່ໃນບໍລິການ FileSystem.

ພາລາມິເຕີ | ຄຳອະທິບາຍ
--- | ---
FileName | ຊື່ເຕັມຂອງໄຟລ໌ລວມທັງເສັ້ນທາງໂດຍບໍ່ມີຕົວແຍກເສັ້ນທາງຢູ່ທ້າຍ.
FolderName | ຊື່ເຕັມຂອງໂຟນເດີລວມທັງເສັ້ນທາງ. ມັນອາດຈະມີ ຫຼື ບໍ່ມີຕົວແຍກເສັ້ນທາງຢູ່ທ້າຍກໍໄດ້.
Name | ສ່ວນປະກອບສຸດທ້າຍຂອງ ຊື່ໂຟນເດີ ຫຼື ຊື່ໄຟລ໌ ລວມທັງນາມສະກຸນຂອງມັນ. ພາລາມິເຕີນີ້ຈະຖືກສະແດງໂດຍໃຊ້ຮູບແບບຂອງລະບົບປະຕິບັດການຕົ້ນສະບັບສະເໝີ.
BaseName | ສ່ວນປະກອບສຸດທ້າຍຂອງ ຊື່ໂຟນເດີ ຫຼື ຊື່ໄຟລ໌ ໂດຍບໍ່ລວມນາມສະກຸນ.
NamePattern | ຊື່ໃດໆກໍຕາມຂ້າງເທິງນັ້ນທີ່ມີຕົວແທນ (wildcards) ໃນສ່ວນປະກອບສຸດທ້າຍຂອງມັນ. ຕົວແທນທີ່ອະນຸຍາດຄື: "?" ແທນໃຫ້ຕົວອັກສອນດຽວໃດໜຶ່ງ "*" ແທນໃຫ້ບໍ່ມີເລີຍ, ໜຶ່ງ ຫຼື ຫຼາຍຕົວອັກສອນ

ບໍລິການ FileSystem ອະນຸຍາດໃຫ້ດຳເນີນການກັບຫຼາຍໆໄຟລ໌ພ້ອມກັນໄດ້. ໂດຍການໃຊ້ຮູບແບບຊື່, ສະຄຣິບຂອງຜູ້ໃຊ້ສາມາດສຳເນົາ, ຍ້າຍ ຫຼື ລຶບຫຼາຍໆໄຟລ໌ໄດ້. ໃນທາງກົງກັນຂ້າມ, ວິທີການທີ່ມີມາໃຫ້ໃນ Basic ສາມາດຈັດການໄດ້ພຽງແຕ່ເທື່ອລະໄຟລ໌ເທົ່ານັ້ນ.

### ຮູບແບບການຕັ້ງຊື່ໄຟລ໌

ຮູບແບບທີ່ໃຊ້ເພື່ອສະແດງຊື່ໄຟລ໌ ແລະ ໂຟນເດີ, ທັງສຳລັບຂໍ້ໂຕ້ແຍ້ງ ແລະ ຄ່າທີ່ສົ່ງຄືນ, ແມ່ນຖືກກຳນົດໂດຍຄຸນສົມບັດ FileNaming ຂອງບໍລິການ FileSystem.

ໂດຍຫຍໍ້, ປະເພດການສະແດງຜົນທີ່ເປັນໄປໄດ້ຄື "URL" (ຮູບແບບໄຟລ໌ URL), "SYS" (ຮູບແບບລະບົບປະຕິບັດການ) ແລະ "ANY" (ຄ່າເລີ່ມຕົ້ນ). ເບິ່ງຂໍ້ມູນເພີ່ມເຕີມໄດ້ທີ່ ຂ້າງລຸ່ມນີ້.

ຕົວຢ່າງຂອງຮູບແບບ URL ຄື file:///C:/Documents/my_file.odt. ເມື່ອໃດກໍຕາມທີ່ເປັນໄປໄດ້ ຄວນພິຈາລະນາໃຊ້ຮູບແບບ URL ເພາະວ່າມັນເປັນທາງເລືອກທີ່ສາມາດນຳໄປໃຊ້ໄດ້ກັບຫຼາຍລະບົບຫຼາຍກວ່າ.

ການໃຊ້ທາງລັດ "~" (tilde), ເຊິ່ງພົບເລື້ອຍໃນລະບົບປະຕິບັດການ Linux, ແມ່ນບໍ່ຮອງຮັບໃນການສະແດງເສັ້ນທາງໄປຫາໂຟນເດີ ແລະ ຊື່ໄຟລ໌. ແທນທີ່ຈະໃຊ້ "~/Documents/my_file.odt" ໃຫ້ໃຊ້ເສັ້ນທາງເຕັມ "/home/user/Documents/my_file.odt".

## ການເອີ້ນໃຊ້ບໍລິການ

ສ່ວນຂອງລະຫັດຕໍ່ໄປນີ້ເອີ້ນໃຊ້ບໍລິການ FileSystem. ວິທີການ BuildPath ຖືກໃຊ້ເປັນຕົວຢ່າງ.

##### ໃນ Basic

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

##### ໃນ Python

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

## ການເຂົ້າເຖິງລະບົບໄຟລ໌ສະເມືອນຂອງເອກະສານ

ໄຟລ໌ເອກະສານຂອງ LibreOffice ແມ່ນໄຟລ໌ ZIP ທີ່ຖືກບີບອັດເຊິ່ງບັນຈຸໄຟລ໌ ແລະ ໂຟນເດີທີ່ສະແດງເຖິງເນື້ອຫາຕົວຈິງຂອງເອກະສານ. ໃນຂະນະທີ່ເອກະສານຖືກເປີດຢູ່, ເຮົາສາມາດເຂົ້າເຖິງລະບົບໄຟລ໌ສະເມືອນນີ້, ສຳຫຼວດໂຄງສ້າງຂອງມັນ, ລວມທັງອ່ານ ແລະ ສ້າງໄຟລ໌ ແລະ ໂຟນເດີໄດ້.

ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວິທີການສ້າງໄຟລ໌ຂໍ້ຄວາມຊື່ myFile.txt ແລະ ເກັບມັນໄວ້ໃນລະບົບໄຟລ໌ສະເມືອນຂອງເອກະສານ.

##### ໃນ 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)
        ' ຮັບເອົາຮູບແບບເສັ້ນທາງ URL ໄປຫາຮາກ (root) ຂອງລະບົບໄຟລ໌ສະເມືອນ
        sRoot = oDoc.FileSystem()
        sMyDir = sRoot & "myDir"
        ' ສ້າງໂຟນເດີ "myDir" ຖ້າມັນຍັງບໍ່ມີຢູ່
        If Not fso.FolderExists(sMyDir) Then
            fso.CreateFolder(sMyDir)
        End If
        ' ສ້າງໄຟລ໌ ແລະ ຂຽນຂໍ້ຄວາມບາງຢ່າງລົງໄປ
        sFile = fso.BuildPath(sMyDir, "myFile.txt")
        oFile = fso.CreateTextFile(sFile)
        oFile.WriteLine("Hello!")
        oFile.CloseFile()

##### ໃນ 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()

ໂດຍທົ່ວໄປແລ້ວ, ວິທີການທັງໝົດຂອງບໍລິການ FileSystem ສາມາດໃຊ້ເພື່ອຈັດການໄຟລ໌ໃນລະບົບໄຟລ໌ສະເມືອນຂອງເອກະສານໄດ້. ແນວໃດກໍຕາມ, ມີຂໍ້ຈຳກັດດັ່ງຕໍ່ໄປນີ້:

- ບໍ່ສາມາດສ້າງໄຟລ໌ໃນໂຟນເດີຮາກ (root) ໄດ້. ໃຫ້ໃຊ້ໂຟນເດີຍ່ອຍທີ່ມີຢູ່ແລ້ວ ຫຼື ສ້າງໂຟນເດີໃໝ່ເພື່ອເກັບໄຟລ໌ໃນລະບົບໄຟລ໌ຂອງເອກະສານ.

- ຮູບແບບ FileNaming ຈະຖືກພິຈາລະນາວ່າເປັນ "URL" ສະເໝີ.

- ວິທີການ CompareFiles, GetFileModified, HashFile, PickFile ແລະ PickFolder ແມ່ນບໍ່ສາມາດນຳໃຊ້ໄດ້.

- ວິທີການ GetFileLen ຈະສົ່ງຄືນຄ່າເປັນສູນສະເໝີ.

- ວິທີການ Normalize ຈະສົ່ງຄືນສາຍອັກຂະລະທີ່ປ້ອນເຂົ້າໄປໂດຍບໍ່ມີການປ່ຽນແປງສະເໝີ.

ເສັ້ນທາງໄປຫາລະບົບໄຟລ໌ສະເມືອນບໍ່ແມ່ນທີ່ຢູ່ທາງກາຍະພາບໃນຮາດໄດຣຟ໌ຂອງຄອມພິວເຕີ. ມັນສາມາດເຂົ້າເຖິງໄດ້ຈາກພາຍໃນສະຄຣິບຂອງ LibreOffice ເທົ່ານັ້ນ ແລະ ມັນຈະມີຢູ່ສະເພາະໃນຂະນະທີ່ໄຟລ໌ເອກະສານຖືກເປີດຢູ່.

## ຄຸນສົມບັດ

ຊື່ | ອ່ານໄດ້ຢ່າງດຽວ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | --- | ---
FileNaming | ບໍ່ | String | ຕັ້ງຄ່າ ຫຼື ສົ່ງຄືນຮູບແບບໄຟລ໌ ແລະ ໂຟນເດີປັດຈຸບັນ, ເຊິ່ງອາດຈະເປັນ "ANY", "URL" ຫຼື "SYS": "ANY": (ຄ່າເລີ່ມຕົ້ນ) ວິທີການຕ່າງໆຂອງບໍລິການ FileSystem ຍອມຮັບທັງຮູບແບບ URL ແລະ ຮູບແບບຂອງລະບົບປະຕິບັດການປັດຈຸບັນສຳລັບຂໍ້ໂຕ້ແຍ້ງທີ່ປ້ອນເຂົ້າ ແຕ່ຈະສົ່ງຄືນເປັນສາຍອັກຂະລະ URL ສະເໝີ. "URL": ວິທີການຕ່າງໆຂອງບໍລິການ FileSystem ຄາດຫວັງໃຫ້ໃຊ້ຮູບແບບ URL ສຳລັບຂໍ້ໂຕ້ແຍ້ງທີ່ປ້ອນເຂົ້າ ແລະ ຈະສົ່ງຄືນເປັນສາຍອັກຂະລະ URL. "SYS": ວິທີການຕ່າງໆຂອງບໍລິການ FileSystem ຄາດຫວັງໃຫ້ໃຊ້ຮູບແບບຂອງລະບົບປະຕິບັດການປັດຈຸບັນສຳລັບທັງຂໍ້ໂຕ້ແຍ້ງທີ່ປ້ອນເຂົ້າ ແລະ ຄ່າທີ່ສົ່ງຄືນ. ເມື່ອຖືກຕັ້ງຄ່າແລ້ວ, ຄຸນສົມບັດ FileNaming ຈະບໍ່ປ່ຽນແປງຈົນກວ່າຈະສິ້ນສຸດເຊດຊັນ (session) ຂອງ LibreOffice ຫຼື ຈົນກວ່າມັນຈະຖືກຕັ້ງຄ່າໃໝ່.
ConfigFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີການຕັ້ງຄ່າ (configuration) ຂອງ LibreOffice.
ExtensionsFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີທີ່ຕິດຕັ້ງສ່ວນເສີມ (extensions) ຕ່າງໆໄວ້.
HomeFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີຫຼັກ (home folder) ຂອງຜູ້ໃຊ້.
InstallFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີທີ່ຕິດຕັ້ງໂປຣແກຣມ LibreOffice.
TemplatesFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີທີ່ບັນຈຸໄຟລ໌ແມ່ແບບ (templates) ຂອງລະບົບ.
TemporaryFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີໄຟລ໌ຊົ່ວຄາວທີ່ຖືກກຳນົດໄວ້ໃນການຕັ້ງຄ່າເສັ້ນທາງຂອງ LibreOffice.
UserTemplatesFolder | ແມ່ນ | String | ສົ່ງຄືນໂຟນເດີທີ່ບັນຈຸໄຟລ໌ແມ່ແບບທີ່ຜູ້ໃຊ້ກຳນົດເອງ.

ລາຍຊື່ວິທີການໃນບໍລິການ 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

ລວມເສັ້ນທາງໂຟນເດີ ແລະ ຊື່ຂອງໄຟລ໌ເຂົ້າກັນ ແລະ ສົ່ງຄືນຊື່ໄຟລ໌ເຕັມພ້ອມກັບຕົວແຍກເສັ້ນທາງທີ່ຖືກຕ້ອງ. ຕົວແຍກເສັ້ນທາງຈະຖືກເພີ່ມເຂົ້າເມື່ອມີຄວາມຈຳເປັນເທົ່ານັ້ນ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

foldername: ເສັ້ນທາງທີ່ຈະຖືກນຳມາລວມເຂົ້າກັບ name. ເສັ້ນທາງທີ່ລະບຸບໍ່ຈຳເປັນຕ້ອງແມ່ນໂຟນເດີທີ່ມີຢູ່ແລ້ວ.

name: ຊື່ຂອງໄຟລ໌ທີ່ຈະນຳມາຕໍ່ໃສ່ foldername. ພາລາມິເຕີນີ້ໃຊ້ຮູບແບບຂອງລະບົບປະຕິບັດການປັດຈຸບັນ.

### ຕົວຢ່າງ:

##### ໃນ 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

##### ໃນ Python

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

## CompareFiles

ປຽບທຽບສອງໄຟລ໌ ແລະ ສົ່ງຄືນ True ເມື່ອພວກມັນເບິ່ງຄືວ່າຄືກັນ.

ຂຶ້ນຢູ່ກັບຄ່າຂອງຂໍ້ໂຕ້ແຍ້ງ comparecontents, ການປຽບທຽບລະຫວ່າງທັງສອງໄຟລ໌ອາດຈະອີງຕາມຄຸນລັກສະນະຂອງໄຟລ໌ເທົ່ານັ້ນ (ເຊັ່ນ: ວັນທີແກ້ໄຂຄັ້ງຫຼ້າສຸດ), ຫຼື ອີງຕາມເນື້ອຫາຂອງໄຟລ໌.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

filename1, filename2: ໄຟລ໌ຕ່າງໆທີ່ຈະນຳມາປຽບທຽບ.

comparecontents: ເມື່ອເປັນ True, ເນື້ອຫາຂອງໄຟລ໌ຈະຖືກປຽບທຽບກັນ (ຄ່າເລີ່ມຕົ້ນ = False).

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

## CopyFile

ສຳເນົາໜຶ່ງໄຟລ໌ ຫຼື ຫຼາຍກວ່າຈາກສະຖານທີ່ໜຶ່ງໄປຍັງອີກບ່ອນໜຶ່ງ. ສົ່ງຄືນ True ຖ້າມີຢ່າງໜ້ອຍໜຶ່ງໄຟລ໌ຖືກສຳເນົາແລ້ວ ຫຼື False ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ຂໍ້ຜິດພາດຈະເກີດຂຶ້ນຄືກັນ ຖ້າພາລາມິເຕີ source ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ແລ້ວບໍ່ກົງກັບໄຟລ໌ໃດໆ.

ວິທີການນີ້ຈະຢຸດທັນທີຫຼັງຈາກພົບຂໍ້ຜິດພາດ. ວິທີການນີ້ຈະບໍ່ມີການຍ້ອນກັບ (roll back) ຫຼື ຍົກເລີກການປ່ຽນແປງທີ່ເກີດຂຶ້ນກ່ອນທີ່ຈະພົບຂໍ້ຜິດພາດ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

source: ມັນສາມາດເປັນ FileName ຫຼື NamePattern ທີ່ລະບຸໜຶ່ງໄຟລ໌ ຫຼື ຫຼາຍກວ່າທີ່ຈະຖືກສຳເນົາ.

destination: ມັນສາມາດເປັນໄດ້ທັງ FileName ທີ່ລະບຸບ່ອນທີ່ໄຟລ໌ source ດຽວຈະຖືກສຳເນົາໄປ, ຫຼື FolderName ບ່ອນທີ່ຈະສຳເນົາຫຼາຍໆໄຟລ໌ຈາກ source ເຂົ້າໄປ.

- ຖ້າ destination ຍັງບໍ່ມີຢູ່, ມັນຈະຖືກສ້າງຂຶ້ນ.

- ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ໃນ destination.

overwrite: ຖ້າເປັນ True (ຄ່າເລີ່ມຕົ້ນ), ໄຟລ໌ຕ່າງໆອາດຈະຖືກຂຽນທັບ. ວິທີການນີ້ຈະບໍ່ສຳເລັດຖ້າ destination ແມ່ນອ່ານໄດ້ຢ່າງດຽວ, ບໍ່ວ່າຈະກຳນົດຄ່າໃນ overwrite ເປັນແນວໃດກໍຕາມ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງລຸ່ມນີ້ ແຖວທຳອິດແມ່ນການສຳເນົາໄຟລ໌ດຽວ ໃນຂະນະທີ່ແຖວທີສອງແມ່ນການສຳເນົາຫຼາຍໆໄຟລ໌ໂດຍໃຊ້ຕົວແທນ (wildcards).

##### ໃນ Basic

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

##### ໃນ 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)

ຂໍໃຫ້ຮັບຮູ້ວ່າ ໂຟນເດີຍ່ອຍ ແລະ ເນື້ອຫາພາຍໃນຂອງພວກມັນຈະບໍ່ຖືກສຳເນົາໄປນຳ ເມື່ອມີການໃຊ້ຕົວແທນ (wildcards) ໃນຂໍ້ໂຕ້ແຍ້ງ source.

## CopyFolder

ສຳເນົາໜຶ່ງໂຟນເດີ ຫຼື ຫຼາຍກວ່າຈາກສະຖານທີ່ໜຶ່ງໄປຍັງອີກບ່ອນໜຶ່ງ. ສົ່ງຄືນ True ຖ້າມີຢ່າງໜ້ອຍໜຶ່ງໂຟນເດີຖືກສຳເນົາແລ້ວ ຫຼື False ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ຂໍ້ຜິດພາດຈະເກີດຂຶ້ນຄືກັນ ຖ້າພາລາມິເຕີ source ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ແລ້ວບໍ່ກົງກັບໂຟນເດີໃດໆ.

ວິທີການນີ້ຈະຢຸດທັນທີຫຼັງຈາກພົບຂໍ້ຜິດພາດ. ວິທີການນີ້ຈະບໍ່ມີການຍ້ອນກັບ (roll back) ຫຼື ຍົກເລີກການປ່ຽນແປງທີ່ເກີດຂຶ້ນກ່ອນທີ່ຈະພົບຂໍ້ຜິດພາດ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

source: ມັນສາມາດເປັນ FolderName ຫຼື NamePattern ທີ່ລະບຸໜຶ່ງໂຟນເດີ ຫຼື ຫຼາຍກວ່າທີ່ຈະຖືກສຳເນົາ.

destination: ລະບຸ FolderName ບ່ອນທີ່ຈະສຳເນົາໜຶ່ງ ຫຼື ຫຼາຍໂຟນເດີທີ່ກຳນົດໃນ source ເຂົ້າໄປ.

- ຖ້າ destination ຍັງບໍ່ມີຢູ່, ມັນຈະຖືກສ້າງຂຶ້ນ.

- ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ໃນ destination.

overwrite: ຖ້າເປັນ True (ຄ່າເລີ່ມຕົ້ນ), ໄຟລ໌ຕ່າງໆອາດຈະຖືກຂຽນທັບ. ວິທີການນີ້ຈະບໍ່ສຳເລັດຖ້າ destination ແມ່ນອ່ານໄດ້ຢ່າງດຽວ, ບໍ່ວ່າຈະກຳນົດຄ່າໃນ overwrite ເປັນແນວໃດກໍຕາມ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງລຸ່ມນີ້ ໄຟລ໌, ໂຟນເດີ ແລະ ໂຟນເດີຍ່ອຍທັງໝົດຈະຖືກສຳເນົາ.

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

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

## CreateFolder

ສ້າງ FolderName ທີ່ລະບຸໄວ້. ສົ່ງຄືນ True ຖ້າໂຟນເດີສາມາດຖືກສ້າງໄດ້ສຳເລັດ.

ຖ້າໂຟນເດີທີ່ລະບຸມີໂຟນເດີແມ່ (parent folder) ທີ່ຍັງບໍ່ມີຢູ່, ມັນກໍຈະຖືກສ້າງຂຶ້ນຄືກັນ.

### ໄວຍາກອນ:

svc.CreateFolder(foldername: str): bool

### ພາຣາມິເຕີ:

foldername: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໂຟນເດີທີ່ຈະຖືກສ້າງ. ຖ້າໂຟນເດີມີຢູ່ແລ້ວ, ຈະມີຂໍ້ຍົກເວັ້ນ (exception) ເກີດຂຶ້ນ.

### ຕົວຢ່າງ:

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

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

## CreateTextFile

ສ້າງໄຟລ໌ທີ່ລະບຸ ແລະ ສົ່ງຄືນອິນສະແຕນຂອງບໍລິການ TextStream ທີ່ສາມາດໃຊ້ເພື່ອຂຽນລົງໃນໄຟລ໌ໄດ້.

ວິທີການນີ້ຈະສົ່ງຄືນອັອບເຈັກ Null ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

filename: ຊື່ຂອງໄຟລ໌ທີ່ຈະຖືກສ້າງ.

overwrite: ຄ່າບູລີນ (Boolean) ທີ່ກຳນົດວ່າ filename ສາມາດຖືກຂຽນທັບໄດ້ຫຼືບໍ່ (ຄ່າເລີ່ມຕົ້ນ = True).

encoding: ຊຸດຕົວອັກສອນທີ່ຈະຖືກນຳໃຊ້. ການເຂົ້າລະຫັດເລີ່ມຕົ້ນແມ່ນ "UTF-8".

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບຊື່ຂອງຊຸດຕົວອັກສອນ, ໃຫ້ໄປທີ່ໜ້າ ຊຸດຕົວອັກສອນຂອງ IANA. ຂໍໃຫ້ຮັບຮູ້ວ່າ LibreOffice ບໍ່ໄດ້ຮອງຮັບທຸກຊຸດຕົວອັກສອນທີ່ມີຢູ່.

## DeleteFile

ລຶບໜຶ່ງໄຟລ໌ ຫຼື ຫຼາຍກວ່າ. ສົ່ງຄືນ True ຖ້າມີຢ່າງໜ້ອຍໜຶ່ງໄຟລ໌ຖືກລຶບແລ້ວ ຫຼື False ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ຂໍ້ຜິດພາດຈະເກີດຂຶ້ນຄືກັນ ຖ້າພາລາມິເຕີ filename ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ແລ້ວບໍ່ກົງກັບໄຟລ໌ໃດໆ.

ໄຟລ໌ທີ່ຈະຖືກລຶບຕ້ອງບໍ່ແມ່ນໄຟລ໌ແບບອ່ານໄດ້ຢ່າງດຽວ (readonly).

ວິທີການນີ້ຈະຢຸດທັນທີຫຼັງຈາກພົບຂໍ້ຜິດພາດ. ວິທີການນີ້ຈະບໍ່ມີການຍ້ອນກັບ (roll back) ຫຼື ຍົກເລີກການປ່ຽນແປງທີ່ເກີດຂຶ້ນກ່ອນທີ່ຈະພົບຂໍ້ຜິດພາດ.

### ໄວຍາກອນ:

svc.DeleteFile(filename: str): bool

### ພາຣາມິເຕີ:

filename: ມັນສາມາດເປັນ FileName ຫຼື NamePattern ທີ່ລະບຸໜຶ່ງໄຟລ໌ ຫຼື ຫຼາຍກວ່າທີ່ຈະຖືກລຶບ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງລຸ່ມນີ້ ມີພຽງແຕ່ໄຟລ໌ເທົ່ານັ້ນທີ່ຈະຖືກລຶບ, ໂຟນເດີຍ່ອຍຈະບໍ່ຖືກລຶບ.

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

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

## DeleteFolder

ລຶບໜຶ່ງໂຟນເດີ ຫຼື ຫຼາຍກວ່າ. ສົ່ງຄືນ True ຖ້າມີຢ່າງໜ້ອຍໜຶ່ງໂຟນເດີຖືກລຶບແລ້ວ ຫຼື False ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ຂໍ້ຜິດພາດຈະເກີດຂຶ້ນຄືກັນ ຖ້າພາລາມິເຕີ foldername ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ແລ້ວບໍ່ກົງກັບໂຟນເດີໃດໆ.

ໂຟນເດີທີ່ຈະຖືກລຶບຕ້ອງບໍ່ແມ່ນແບບອ່ານໄດ້ຢ່າງດຽວ (readonly).

ວິທີການນີ້ຈະຢຸດທັນທີຫຼັງຈາກພົບຂໍ້ຜິດພາດ. ວິທີການນີ້ຈະບໍ່ມີການຍ້ອນກັບ (roll back) ຫຼື ຍົກເລີກການປ່ຽນແປງທີ່ເກີດຂຶ້ນກ່ອນທີ່ຈະພົບຂໍ້ຜິດພາດ.

### ໄວຍາກອນ:

svc.DeleteFolder(foldername: str): bool

### ພາຣາມິເຕີ:

foldername: ມັນສາມາດເປັນ FolderName ຫຼື NamePattern ທີ່ລະບຸໜຶ່ງໂຟນເດີ ຫຼື ຫຼາຍກວ່າທີ່ຈະຖືກລຶບ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງລຸ່ມນີ້ ມີພຽງແຕ່ໂຟນເດີ ແລະ ເນື້ອຫາພາຍໃນຂອງພວກມັນເທົ່ານັ້ນທີ່ຈະຖືກລຶບ. ໄຟລ໌ຕ່າງໆໃນໂຟນເດີແມ່ "C:\Temp" ຈະບໍ່ຖືກລຶບ.

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

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

## ExtensionFolder

ສົ່ງຄືນສາຍອັກຂະລະທີ່ບອກເຖິງໂຟນເດີທີ່ແພັກເກັດສ່ວນເສີມ (extension package) ທີ່ລະບຸໄດ້ຖືກຕິດຕັ້ງໄວ້.

ຄ່າປັດຈຸບັນຂອງຄຸນສົມບັດ SF_FileSystem.FileNaming ຈະຖືກໃຊ້ເພື່ອ ກຳນົດຮູບແບບຂອງສາຍອັກຂະລະທີ່ສົ່ງຄືນ.

ໃຊ້ຄຸນສົມບັດ Extensions ຈາກບໍລິການ Platform ເພື່ອຮັບເອົາອາເຣຂອງສາຍອັກຂະລະທີ່ມີ ID ຂອງສ່ວນເສີມທັງໝົດທີ່ຕິດຕັ້ງໄວ້.

### ໄວຍາກອນ:

svc.ExtensionFolder(extension: str): str

### ພາຣາມິເຕີ:

extension: ຄ່າສາຍອັກຂະລະທີ່ບອກເຖິງ ID ຂອງສ່ວນເສີມ. ຖ້າສ່ວນເສີມນັ້ນຍັງບໍ່ໄດ້ຖືກຕິດຕັ້ງ, ຈະມີຂໍ້ຍົກເວັ້ນ (exception) ເກີດຂຶ້ນ.

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ໃນ Basic ແລະ Python ຈະສົ່ງຄືນໂຟນເດີທີ່ຕິດຕັ້ງສ່ວນເສີມ 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

ສົ່ງຄືນ True ຖ້າຊື່ໄຟລ໌ທີ່ກຳນົດໃຫ້ຖືກຕ້ອງ ແລະ ມີຢູ່ແລ້ວ, ບໍ່ດັ່ງນັ້ນວິທີການນີ້ຈະສົ່ງຄືນ False.

ຖ້າພາລາມິເຕີ filename ໃນຕົວຈິງແລ້ວແມ່ນຊື່ໂຟນເດີທີ່ມີຢູ່ແລ້ວ, ວິທີການນີ້ຈະສົ່ງຄືນ False.

### ໄວຍາກອນ:

svc.FileExists(filename: str): bool

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໄຟລ໌ທີ່ຈະທົດສອບ.

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

## Files

ສົ່ງຄືນອາເຣທີ່ເລີ່ມຕົ້ນດ້ວຍສູນ (BASIC) ຫຼື ທັບໂພລ (tuple) ໃນ Python ຂອງໄຟລ໌ຕ່າງໆທີ່ເກັບໄວ້ໃນໂຟນເດີທີ່ກຳນົດໃຫ້. ແຕ່ລະລາຍການໃນອາເຣ ຫຼື ທັບໂພລແມ່ນສາຍອັກຂະລະທີ່ບັນຈຸເສັ້ນທາງເຕັມ ແລະ ຊື່ໄຟລ໌.

ຖ້າຂໍ້ໂຕ້ແຍ້ງ foldername ລະບຸໂຟນເດີທີ່ຍັງບໍ່ມີຢູ່, ຈະມີຂໍ້ຍົກເວັ້ນ (exception) ເກີດຂຶ້ນ.

ລາຍຊື່ຜົນໄດ້ຮັບອາດຈະຖືກຕອງດ້ວຍຕົວແທນ (wildcards).

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

foldername: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໂຟນເດີ. ໂຟນເດີນັ້ນຕ້ອງມີຢູ່ແລ້ວ. ຂໍ້ໂຕ້ແຍ້ງນີ້ຕ້ອງບໍ່ລະບຸເປັນໄຟລ໌.

filter: ສາຍອັກຂະລະທີ່ບັນຈຸຕົວແທນ ("?" ແລະ "*") ເຊິ່ງຈະຖືກນຳໃຊ້ກັບລາຍຊື່ໄຟລ໌ທີ່ໄດ້ຮັບ (ຄ່າເລີ່ມຕົ້ນ = "").

includesubfolders: ຕັ້ງຂໍ້ໂຕ້ແຍ້ງນີ້ເປັນ True ເພື່ອລວມເອົາເນື້ອຫາໃນໂຟນເດີຍ່ອຍນຳ (ຄ່າເລີ່ມຕົ້ນ = False).

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim filesList As Variant, file As String
          FSO.FileNaming = "SYS"
          ' ສົ່ງຄືນໄຟລ໌ທັງໝົດທີ່ກົງກັບຕົວຕອງ "*.txt", ລວມທັງໄຟລ໌ໃນໂຟນເດີຍ່ອຍ
          filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
          For Each file In filesList
              ' ...
          Next file

##### ໃນ Python

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

## FolderExists

ສົ່ງຄືນ True ຖ້າ FolderName ທີ່ລະບຸຖືກຕ້ອງ ແລະ ມີຢູ່ແລ້ວ, ບໍ່ດັ່ງນັ້ນວິທີການນີ້ຈະສົ່ງຄືນ False.

ຖ້າພາລາມິເຕີ foldername ໃນຕົວຈິງແລ້ວແມ່ນຊື່ໄຟລ໌ທີ່ມີຢູ່ແລ້ວ, ວິທີການນີ້ຈະສົ່ງຄືນ False.

### ໄວຍາກອນ:

svc.FolderExists(foldername: str): bool

### ພາຣາມິເຕີ:

foldername: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໂຟນເດີທີ່ຈະທົດສອບ.

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

## GetBaseName

ສົ່ງຄືນ BaseName (ເທົ່າກັບສ່ວນປະກອບສຸດທ້າຍ) ຂອງຊື່ໂຟນເດີ ຫຼື ໄຟລ໌, ໂດຍບໍ່ລວມນາມສະກຸນ.

ວິທີການນີ້ບໍ່ໄດ້ກວດສອບວ່າໄຟລ໌ ຫຼື ໂຟນເດີທີ່ລະບຸມີຢູ່ແລ້ວບໍ່.

### ໄວຍາກອນ:

svc.GetBaseName(filename: str): str

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງຊື່ໄຟລ໌ ແລະ ເສັ້ນທາງຂອງມັນ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງລຸ່ມນີ້, ການເອີ້ນໃຊ້ວິທີການ GetBaseName ຄັ້ງທຳອິດແມ່ນກົງກັບໂຟນເດີ, ດັ່ງນັ້ນຟັງຊັນຈຶ່ງສົ່ງຄືນສ່ວນປະກອບສຸດທ້າຍຂອງເສັ້ນທາງ. ການເອີ້ນໃຊ້ຄັ້ງທີສອງແມ່ນໄດ້ຮັບຊື່ໄຟລ໌ເປັນຂໍ້ມູນຂາເຂົ້າ, ດັ່ງນັ້ນຊື່ຂອງໄຟລ໌ຈຶ່ງຖືກສົ່ງຄືນໂດຍບໍ່ລວມນາມສະກຸນ.

##### ໃນ Basic

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

##### ໃນ 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

ສົ່ງຄືນສ່ວນນາມສະກຸນຂອງຊື່ໄຟລ໌ ຫຼື ໂຟນເດີໂດຍບໍ່ລວມຕົວອັກສອນຈ້ຳ ".".

ວິທີການນີ້ບໍ່ໄດ້ກວດສອບການມີຢູ່ຂອງໄຟລ໌ ຫຼື ໂຟນເດີທີ່ລະບຸ.

ຖ້າວິທີການນີ້ຖືກໃຊ້ກັບຊື່ໂຟນເດີ ຫຼື ໄຟລ໌ທີ່ບໍ່ມີນາມສະກຸນ, ມັນຈະສົ່ງຄືນສາຍອັກຂະລະທີ່ຫວ່າງເປົ່າ.

### ໄວຍາກອນ:

svc.GetExtension(filename: str): str

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງຊື່ໄຟລ໌ ແລະ ເສັ້ນທາງຂອງມັນ.

### ຕົວຢ່າງ:

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

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

## GetFileLen

ຟັງຊັນ FileLen ທີ່ມີມາໃຫ້ໃນ Basic ຈະສົ່ງຄືນຈຳນວນໄບຕ໌ (bytes) ໃນໄຟລ໌ເປັນຄ່າ Long, ເຊິ່ງຮອງຮັບໄດ້ສູງສຸດ 2GB.

ວິທີການ GetFileLen ສາມາດຈັດການກັບໄຟລ໌ທີ່ມີຂະໜາດໃຫຍ່ກວ່ານັ້ນໄດ້ຫຼາຍ ໂດຍການສົ່ງຄືນເປັນຄ່າ Currency.

### ໄວຍາກອນ:

svc.GetFileLen(filename: str): num

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໄຟລ໌ທີ່ມີຢູ່ແລ້ວ.

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

## GetFileModified

ສົ່ງຄືນວັນທີທີ່ມີການແກ້ໄຂຄັ້ງຫຼ້າສຸດຂອງໄຟລ໌ທີ່ກຳນົດໃຫ້.

### ໄວຍາກອນ:

svc.GetFileModified(filename: str): datetime

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໄຟລ໌ທີ່ມີຢູ່ແລ້ວ.

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

## GetName

ສົ່ງຄືນສ່ວນປະກອບສຸດທ້າຍຂອງຊື່ໄຟລ໌ ຫຼື ໂຟນເດີໃນຮູບແບບຂອງລະບົບປະຕິບັດການຕົ້ນສະບັບ.

ວິທີການນີ້ບໍ່ໄດ້ກວດສອບວ່າໄຟລ໌ ຫຼື ໂຟນເດີທີ່ລະບຸມີຢູ່ແລ້ວບໍ່.

### ໄວຍາກອນ:

svc.GetName(filename: str): str

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງຊື່ໄຟລ໌ ແລະ ເສັ້ນທາງຂອງມັນ.

### ຕົວຢ່າງ:

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

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

## GetParentFolderName

ສົ່ງຄືນສາຍອັກຂະລະທີ່ບັນຈຸຊື່ຂອງໂຟນເດີແມ່ (parent folder) ຂອງໄຟລ໌ ຫຼື ຊື່ໂຟນເດີທີ່ລະບຸໄວ້.

ວິທີການນີ້ບໍ່ໄດ້ກວດສອບວ່າໄຟລ໌ ຫຼື ໂຟນເດີທີ່ລະບຸມີຢູ່ແລ້ວບໍ່.

### ໄວຍາກອນ:

svc.GetParentFolderName(filename: str): str

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ມີຊື່ໄຟລ໌ ຫຼື ໂຟນເດີທີ່ຈະນຳມາວິເຄາະ.

### ຕົວຢ່າງ:

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

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

## GetTempName

ສົ່ງຄືນຊື່ໄຟລ໌ຊົ່ວຄາວທີ່ຖືກສຸ່ມສ້າງຂຶ້ນ ເຊິ່ງມີປະໂຫຍດສຳລັບການດຳເນີນການທີ່ຕ້ອງການໄຟລ໌ຊົ່ວຄາວ.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ຊື່ໄຟລ໌ທີ່ສົ່ງຄືນມາຈະບໍ່ມີນາມສະກຸນ. ໃຫ້ໃຊ້ພາລາມິເຕີ extension ເພື່ອລະບຸນາມສະກຸນຂອງຊື່ໄຟລ໌ທີ່ຈະຖືກສ້າງ.

ສ່ວນຂອງໂຟນເດີໃນສາຍອັກຂະລະທີ່ສົ່ງຄືນມານັ້ນແມ່ນໂຟນເດີຊົ່ວຄາວຂອງລະບົບ.

ວິທີການນີ້ບໍ່ໄດ້ສ້າງໄຟລ໌ຊົ່ວຄາວໃຫ້ແທ້ໆ.

### ໄວຍາກອນ:

svc.GetTempName(extension: str): str

### ພາຣາມິເຕີ:

extension: ນາມສະກຸນຂອງຊື່ໄຟລ໌ຊົ່ວຄາວ (ຄ່າເລີ່ມຕົ້ນ = "").

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

## HashFile

ຟັງຊັນ Hash ຖືກນຳໃຊ້ໂດຍອັນກໍຣິທຶມການເຂົ້າລະຫັດບາງຢ່າງ, ໃນລາຍເຊັນດິຈິຕອນ, ລະຫັດຢືນຢັນຂໍ້ຄວາມ, ການກວດສອບການສໍ້ໂກງ, ລາຍນິ້ວມື, ຜົນລວມການກວດສອບ (ການກວດສອບຄວາມສົມບູນຂອງຂໍ້ຄວາມ), ຕາຕະລາງ hash, ການເກັບຮັກສາລະຫັດຜ່ານ ແລະ ອື່ນໆອີກຫຼາຍຢ່າງ.

ວິທີການ HashFile ສົ່ງຄືນຜົນໄດ້ຮັບຂອງຟັງຊັນ hash ທີ່ຖືກນຳໃຊ້ກັບໄຟລ໌ທີ່ກຳນົດໃຫ້ ໂດຍໃຊ້ອັນກໍຣິທຶມທີ່ລະບຸໄວ້. ຄ່າທີ່ສົ່ງຄືນແມ່ນສາຍອັກຂະລະຂອງເລກຖານສິບຫົກ (hexadecimal) ທີ່ເປັນຕົວອັກສອນນ້ອຍ.

ອັນກໍຣິທຶມ hash ທີ່ຮອງຮັບຄື: MD5, SHA1, SHA224, SHA256, SHA384 ແລະ SHA512.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໄຟລ໌ທີ່ມີຢູ່ແລ້ວ.

algorithm: ໜຶ່ງໃນອັນກໍຣິທຶມທີ່ຮອງຮັບ.

### ຕົວຢ່າງ:

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

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

## MoveFile

ຍ້າຍໜຶ່ງໄຟລ໌ ຫຼື ຫຼາຍກວ່າຈາກສະຖານທີ່ໜຶ່ງໄປຍັງອີກບ່ອນໜຶ່ງ. ສົ່ງຄືນ True ຖ້າມີຢ່າງໜ້ອຍໜຶ່ງໄຟລ໌ຖືກຍ້າຍແລ້ວ ຫຼື False ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ຂໍ້ຜິດພາດຈະເກີດຂຶ້ນຄືກັນ ຖ້າພາລາມິເຕີ source ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ແລ້ວບໍ່ກົງກັບໄຟລ໌ໃດໆ.

ວິທີການນີ້ຈະຢຸດທັນທີຫຼັງຈາກພົບຂໍ້ຜິດພາດ. ວິທີການນີ້ຈະບໍ່ມີການຍ້ອນກັບ (roll back) ຫຼື ຍົກເລີກການປ່ຽນແປງທີ່ເກີດຂຶ້ນກ່ອນທີ່ຈະພົບຂໍ້ຜິດພາດ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

source: ມັນສາມາດເປັນ FileName ຫຼື NamePattern ເພື່ອລະບຸໄຟລ໌ໜຶ່ງ ຫຼື ຫຼາຍກວ່າທີ່ຈະຍ້າຍ.

destination: ຖ້າ source ແມ່ນ FileName ພາລາມິເຕີນີ້ຈະບອກເຖິງເສັ້ນທາງ ແລະ ຊື່ໄຟລ໌ໃໝ່ຂອງໄຟລ໌ທີ່ຖືກຍ້າຍ.

ຖ້າການຍ້າຍນັ້ນກ່ຽວຂ້ອງກັບຫຼາຍໄຟລ໌, destination ຕ້ອງແມ່ນຊື່ໂຟນເດີ. ຖ້າມັນຍັງບໍ່ມີຢູ່, ມັນຈະຖືກສ້າງຂຶ້ນ.

ຖ້າ source ແລະ destination ມີໂຟນເດີແມ່ອັນດຽວກັນ, ວິທີການນີ້ຈະເຮັດການປ່ຽນຊື່ source.

ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ໃນ destination.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງຕໍ່ໄປນີ້ ມີພຽງແຕ່ໄຟລ໌ເທົ່ານັ້ນທີ່ຈະຖືກຍ້າຍ, ໂຟນເດີຍ່ອຍຈະບໍ່ຖືກຍ້າຍ.

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

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

## MoveFolder

ຍ້າຍໜຶ່ງໂຟນເດີ ຫຼື ຫຼາຍກວ່າຈາກສະຖານທີ່ໜຶ່ງໄປຍັງອີກບ່ອນໜຶ່ງ. ສົ່ງຄືນ True ຖ້າມີຢ່າງໜ້ອຍໜຶ່ງໂຟນເດີຖືກຍ້າຍແລ້ວ ຫຼື False ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

ຂໍ້ຜິດພາດຈະເກີດຂຶ້ນຄືກັນ ຖ້າພາລາມິເຕີ source ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ແລ້ວບໍ່ກົງກັບໂຟນເດີໃດໆ.

ວິທີການນີ້ຈະຢຸດທັນທີຫຼັງຈາກພົບຂໍ້ຜິດພາດ. ວິທີການນີ້ຈະບໍ່ມີການຍ້ອນກັບ (roll back) ຫຼື ຍົກເລີກການປ່ຽນແປງທີ່ເກີດຂຶ້ນກ່ອນທີ່ຈະພົບຂໍ້ຜິດພາດ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

source: ມັນສາມາດເປັນ FolderName ຫຼື NamePattern ເພື່ອລະບຸໂຟນເດີໜຶ່ງ ຫຼື ຫຼາຍກວ່າທີ່ຈະຍ້າຍ.

destination: ຖ້າການຍ້າຍນັ້ນກ່ຽວຂ້ອງກັບໂຟນເດີດຽວ, destination ແມ່ນຊື່ ແລະ ເສັ້ນທາງຂອງໂຟນເດີທີ່ຖືກຍ້າຍ ແລະ ມັນຕ້ອງບໍ່ມີຢູ່ກ່ອນ.

ຖ້າມີການຍ້າຍຫຼາຍໂຟນເດີ, destination ຈະລະບຸບ່ອນທີ່ໂຟນເດີຕ່າງໆໃນ source ຈະຖືກຍ້າຍເຂົ້າໄປ. ຖ້າ destination ຍັງບໍ່ມີຢູ່, ມັນຈະຖືກສ້າງຂຶ້ນ.

ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຕົວອັກສອນຕົວແທນ (wildcard) ໃນ destination.

### ຕົວຢ່າງ:

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

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

## Normalize

ສົ່ງຄືນສາຍອັກຂະລະທີ່ບັນຈຸຊື່ເສັ້ນທາງທີ່ຖືກປັບໃຫ້ເປັນມາດຕະຖານ (normalized) ໂດຍການຮວບຮວມຕົວແຍກທີ່ເກີນຄວາມຈຳເປັນ ແລະ ການອ້າງອີງລະດັບທີ່ສູງກວ່າ.

ຕົວຢ່າງເຊັ່ນ: ຊື່ເສັ້ນທາງ A//B, A/B/, A/./B ແລະ A/foo/../B ທັງໝົດຈະຖືກປັບໃຫ້ເປັນ A/B.

ໃນ Windows, ເຄື່ອງໝາຍທັບໄປທາງໜ້າ "/" ຈະຖືກປ່ຽນເປັນເຄື່ອງໝາຍທັບໄປທາງຫຼັງ "\".

ຄ່າປັດຈຸບັນຂອງຄຸນສົມບັດ SF_FileSystem.FileNaming ຈະຖືກໃຊ້ເພື່ອ ກຳນົດຮູບແບບຂອງຂໍ້ໂຕ້ແຍ້ງ filename ລວມທັງຮູບແບບຂອງສາຍອັກຂະລະທີ່ສົ່ງຄືນ.

### ໄວຍາກອນ:

svc.Normalize(filename: str): str

### ພາຣາມິເຕີ:

filename: ສາຍອັກຂະລະທີ່ສະແດງເຖິງຊື່ເສັ້ນທາງທີ່ຖືກຕ້ອງ. ໄຟລ໌ ຫຼື ໄດເຣັກໂທຣີທີ່ສະແດງໂດຍຂໍ້ໂຕ້ແຍ້ງນີ້ອາດຈະຍັງບໍ່ມີຢູ່ກໍໄດ້.

### ຕົວຢ່າງ:

##### ໃນ 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/../")

##### ໃນ 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

ເປີດໄຟລ໌ ແລະ ສົ່ງຄືນອັອບເຈັກ TextStream ທີ່ສາມາດໃຊ້ເພື່ອອ່ານຈາກ, ຂຽນລົງໃນ, ຫຼື ຂຽນຕໍ່ທ້າຍໄຟລ໌ໄດ້.

ຂໍໃຫ້ສັງເກດວ່າວິທີການນີ້ບໍ່ໄດ້ກວດສອບວ່າໄຟລ໌ທີ່ກຳນົດໃຫ້ແມ່ນໄຟລ໌ຂໍ້ຄວາມແທ້ໆບໍ່.

ວິທີການນີ້ຈະສົ່ງຄືນອັອບເຈັກ Null (ໃນ Basic) ຫຼື None (ໃນ Python) ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

filename: ລະບຸໄຟລ໌ທີ່ຈະເປີດ.

iomode: ບອກເຖິງໂໝດການນຳເຂົ້າ/ສົ່ງອອກ (input/output). ມັນສາມາດເປັນໜຶ່ງໃນສາມຄ່າຄົງທີ່: svc.ForReading (ຄ່າເລີ່ມຕົ້ນ), svc.ForWriting, ຫຼື svc.ForAppending.

create: ຄ່າບູລີນ (Boolean) ທີ່ບອກວ່າຈະໃຫ້ສ້າງໄຟລ໌ໃໝ່ໄດ້ຫຼືບໍ່ ຖ້າ filename ທີ່ລະບຸຍັງບໍ່ມີຢູ່:

- ຖ້າເປັນ True ໄຟລ໌ໃໝ່ ແລະ ໂຟນເດີແມ່ຂອງມັນຈະຖືກສ້າງຂຶ້ນຖ້າພວກມັນຍັງບໍ່ມີຢູ່;

- ຖ້າເປັນ False ຈະບໍ່ມີການສ້າງໄຟລ໌ໃໝ່ (ຄ່າເລີ່ມຕົ້ນ).

encoding: ຊຸດຕົວອັກສອນທີ່ຈະຖືກນຳໃຊ້. ການເຂົ້າລະຫັດເລີ່ມຕົ້ນແມ່ນ "UTF-8".

### ຕົວຢ່າງ:

##### ໃນ 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

##### ໃນ Python

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

## PickFile

ເປີດປ່ອງຢ້ຽມໂຕ້ຕອບເພື່ອເປີດ ຫຼື ບັນທຶກໄຟລ໌.

ຖ້າຕັ້ງໂໝດ SAVE ແລະ ໄຟລ໌ທີ່ເລືອກມີຢູ່ແລ້ວ, ຂໍ້ຄວາມແຈ້ງເຕືອນຈະຖືກສະແດງ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

defaultfile: ຂໍ້ໂຕ້ແຍ້ງນີ້ແມ່ນສາຍອັກຂະລະທີ່ປະກອບດ້ວຍຊື່ໂຟນເດີ ແລະ ຊື່ໄຟລ໌:

- ສ່ວນຂອງໂຟນເດີຈະບອກເຖິງໂຟນເດີທີ່ຈະຖືກສະແດງເມື່ອປ່ອງຢ້ຽມໂຕ້ຕອບເປີດຂຶ້ນ (ຄ່າເລີ່ມຕົ້ນ = ໂຟນເດີຫຼ້າສຸດທີ່ຖືກເລືອກ).

- ສ່ວນຂອງໄຟລ໌ຈະລະບຸໄຟລ໌ເລີ່ມຕົ້ນທີ່ຈະເປີດ ຫຼື ບັນທຶກ.

mode: ຄ່າສາຍອັກຂະລະທີ່ສາມາດເປັນໄດ້ທັງ "OPEN" (ສຳລັບໄຟລ໌ຂາເຂົ້າ) ຫຼື "SAVE" (ສຳລັບໄຟລ໌ຂາອອກ). ຄ່າເລີ່ມຕົ້ນແມ່ນ "OPEN".

filter: ນາມສະກຸນຂອງໄຟລ໌ທີ່ຈະຖືກສະແດງເມື່ອປ່ອງຢ້ຽມໂຕ້ຕອບເປີດຂຶ້ນ (ຄ່າເລີ່ມຕົ້ນ = ບໍ່ມີຕົວຕອງ).

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ຈະເປີດປ່ອງຢ້ຽມເລືອກໄຟລ໌ໂດຍໃຊ້ຕົວຕອງ "txt".

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

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

## PickFolder

ເປີດປ່ອງຢ້ຽມໂຕ້ຕອບເພື່ອເລືອກໂຟນເດີ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

defaultfolder: ສາຍອັກຂະລະທີ່ບັນຈຸຊື່ໂຟນເດີທີ່ຈະຖືກສະແດງເມື່ອປ່ອງຢ້ຽມໂຕ້ຕອບເປີດຂຶ້ນ (ຄ່າເລີ່ມຕົ້ນ = ໂຟນເດີຫຼ້າສຸດທີ່ຖືກເລືອກ).

freetext: ຂໍ້ຄວາມທີ່ຈະສະແດງໃນປ່ອງຢ້ຽມໂຕ້ຕອບ (ຄ່າເລີ່ມຕົ້ນ = "").

### ຕົວຢ່າງ:

          ' Basic
          aFolder = FSO.PickFolder("C:\Documents", "ເລືອກໂຟນເດີ ຫຼື ກົດ ຍົກເລີກ")

          # Python
          aFolder = fs.PickFolder(r"C:\Documents", "ເລືອກໂຟນເດີ ຫຼື ກົດ ຍົກເລີກ")

## SubFolders

ສົ່ງຄືນອາເຣທີ່ເລີ່ມຕົ້ນດ້ວຍສູນຂອງສາຍອັກຂະລະທີ່ກົງກັບໂຟນເດີຕ່າງໆທີ່ເກັບໄວ້ໃນ foldername ທີ່ກຳນົດໃຫ້.

ລາຍຊື່ນັ້ນອາດຈະຖືກຕອງດ້ວຍຕົວແທນ (wildcards).

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

foldername: ສາຍອັກຂະລະທີ່ສະແດງເຖິງໂຟນເດີ. ໂຟນເດີນັ້ນຕ້ອງມີຢູ່ແລ້ວ. foldername ຕ້ອງບໍ່ລະບຸເປັນໄຟລ໌.

filter: ສາຍອັກຂະລະທີ່ບັນຈຸຕົວແທນ ("?" ແລະ "*") ເຊິ່ງຈະຖືກນຳໃຊ້ກັບລາຍຊື່ໂຟນເດີທີ່ໄດ້ຮັບ (ຄ່າເລີ່ມຕົ້ນ = "").

includesubfolders: ຕັ້ງຂໍ້ໂຕ້ແຍ້ງນີ້ເປັນ True ເພື່ອລວມເອົາເນື້ອຫາໃນໂຟນເດີຍ່ອຍນຳ (ຄ່າເລີ່ມຕົ້ນ = False).

### ຕົວຢ່າງ:

##### ໃນ Basic

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

##### ໃນ Python

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

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ບໍລິການ ScriptForge.TextStream

ຟັງຊັນ Input [VBA]

ຄຳສັ່ງ Open

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!