Υπηρεσία ScriptForge.FileSystem

Η υπηρεσία FileSystem περιλαμβάνει ρουτίνες για το χειρισμό αρχείων και φακέλων. Ακολουθούν ορισμένα παραδείγματα των δυνατοτήτων που παρέχονται από αυτήν την υπηρεσία:

note

Οι μέθοδοι στην υπηρεσία FileSystem βασίζονται ως επί το πλείστον στη διεπαφή XSimpleFileAccess του UNO.


Ορισμοί

Ο παρακάτω πίνακας παραθέτει τις κύριες παραμέτρους που χρησιμοποιούνται από τις περισσότερες μεθόδους στην υπηρεσία FileSystem.

Παράμετρος

Περιγραφή

FileName

Το πλήρες όνομα του αρχείου, συμπεριλαμβανομένης της διαδρομής χωρίς διαχωριστικό διαδρομής στο τέλος.

FolderName

Το πλήρες όνομα του φακέλου συμπεριλαμβανομένης της διαδρομής. Μπορεί να περιέχει ή όχι το διαχωριστικό τελικής διαδρομής.

Name

Το τελευταίο στοιχείο του Folder Name (ονόματος φακέλου), ή του File Name (ονόματος αρχείου) συμπεριλαμβανομένης της επέκτασής του. Αυτή η παράμετρος εκφράζεται πάντα χρησιμοποιώντας την εγγενή μορφή του λειτουργικού συστήματος.

BaseName

Το τελευταίο στοιχείο του Folder Name ή του File Name χωρίς την επέκτασή του.

NamePattern

Οποιοδήποτε από τα παραπάνω ονόματα περιέχει χαρακτήρες υποκατάστασης στο τελευταίο συστατικό του. Οι αποδεκτές υποκαταστάσεις είναι:

  • "?" αντιπροσωπεύει οποιονδήποτε μεμονωμένο χαρακτήρα

  • Το "*" αντιπροσωπεύει μηδέν, έναν ή πολλούς χαρακτήρες


tip

Η υπηρεσία FileSystem επιτρέπει την εκτέλεση λειτουργιών σε πολλά αρχεία ταυτόχρονα. Χρησιμοποιώντας μοτίβα ονομάτων, τα σενάρια χρήστη μπορούν να αντιγράψουν, να μετακινήσουν ή να διαγράψουν πολλά αρχεία. Αντίθετα, οι βασικές ενσωματωμένες μέθοδοι μπορούν να χειριστούν μόνο μεμονωμένα αρχεία.


Σημειογραφία ονοματολογίας αρχείων

Η σημειογραφία που χρησιμοποιείται για την έκφραση ονομάτων αρχείων και φακέλων, τόσο για ορίσματα όσο και για τιμές που επιστρέφονται, ορίζεται από την ιδιότητα FileNaming της υπηρεσίας FileSystem.

Εν συντομία, οι πιθανοί τύποι αναπαράστασης είναι "URL" (σημειογραφία αρχείου URL), "SYS" (σημειογραφία λειτουργικού συστήματος) και "ANY" (προεπιλογή). Δείτε περισσότερες πληροφορίες παρακάτω.

tip

Ένα παράδειγμα της σημειογραφίας της διεύθυνσης URL είναι το file:///C:/Documents/my_file.odt. Όποτε είναι δυνατόν, σκεφτείτε να χρησιμοποιήσετε τη σημειογραφία URL, επειδή είναι μια πιο φορητή εναλλακτική.


warning

Η χρήση της συντόμευσης "~" (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 στη ρίζα του εικονικού συστήματος αρχείων
    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 μπορούν να χρησιμοποιηθούν για τον χειρισμό αρχείων στο εικονικό σύστημα αρχείων του εγγράφου. Ωστόσο, ισχύουν οι ακόλουθοι περιορισμοί:

note

Η διαδρομή προς το εικονικό σύστημα αρχείων δεν είναι μια φυσική διεύθυνση στον σκληρό δίσκο του υπολογιστή. Η πρόσβαση σε αυτό είναι δυνατή μόνο από ένα σενάριο του LibreOffice και υπάρχει μόνο όταν το αρχείο εγγράφου είναι ανοιχτό.


Ιδιότητες

Όνομα

Μόνο για ανάγνωση

Τύπος

Περιγραφή

FileNaming

Όχι

String

Ορίζει ή επιστρέφει τη σημειογραφία των τρεχόντων αρχείων και φακέλων, είτε "ANY", "URL" ή "SYS":

  • "ANY" (οποιοδήποτε): (προεπιλογή) οι μέθοδοι της υπηρεσίας FileSystem δέχονται τόσο τη διεύθυνση URL, όσο και τη σημειογραφία του τρέχοντος λειτουργικού συστήματος για ορίσματα εισόδου, αλλά πάντα επιστρέφουν συμβολοσειρές URL.

  • "URL": οι μέθοδοι της υπηρεσίας FileSystem αναμένουν σημειογραφία URL για ορίσματα εισόδου και συμβολοσειρές διεύθυνσης URL στην επιστροφή.

  • "SYS": οι μέθοδοι της υπηρεσίας FileSystem αναμένουν τη σημειογραφία του τρέχοντος λειτουργικού συστήματος τόσο για ορίσματα εισόδου, όσο και για συμβολοσειρές επιστροφής.

Αφού οριστεί, η ιδιότητα FileNaming παραμένει αμετάβλητη είτε μέχρι το τέλος της συνεδρίας του LibreOffice, είτε μέχρι να οριστεί ξανά.

ConfigFolder

Ναι

String

Επιστρέφει τον φάκελο διαμόρφωσης του LibreOffice.

ExtensionsFolder

Ναι

String

Επιστρέφει τον φάκελο όπου είναι εγκατεστημένες οι επεκτάσεις.

HomeFolder

Ναι

String

Επιστρέφει τον αρχικό φάκελο του χρήστη.

InstallFolder

Ναι

String

Επιστρέφει τον φάκελο εγκατάστασης του LibreOffice.

TemplatesFolder

Ναι

String

Επιστρέφει τον φάκελο που περιέχει τα αρχεία προτύπων του συστήματος.

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 χρησιμοποιεί χαρακτήρες υποκατάστασης και δεν ταιριάζει με κανένα αρχείο.

Η μέθοδος σταματά αμέσως εάν συναντήσει σφάλμα. Η μέθοδος δεν επαναφέρει ούτε αναιρεί τις αλλαγές που έγιναν πριν εμφανιστεί το σφάλμα.

Σύνταξη:

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

Παράμετροι:

source (προέλευση): Μπορεί να είναι ένα FileName ή ένα NamePattern που υποδεικνύει ένα ή περισσότερα αρχεία προς αντιγραφή.

destination (προορισμός): Μπορεί να είναι είτε FileName (όνομα αρχείου) που καθορίζει πού θα αντιγραφεί το μεμονωμένο αρχείο source (προέλευση), ή FolderName (όνομα φακέλου) στο οποίο πρόκειται να αντιγραφούν τα πολλαπλά αρχεία από την source.

overwrite (αντικατάσταση): Εάν είναι True (προεπιλογή), τα αρχεία ενδέχεται να αντικατασταθούν. Η μέθοδος θα αποτύχει εάν ο destination (προορισμός) είναι μόνο για ανάγνωση, ανεξάρτητα από την τιμή που καθορίζεται στο overwrite.

Παράδειγμα:

Στα παρακάτω παραδείγματα, η πρώτη γραμμή αντιγράφει ένα μόνο αρχείο, ενώ η δεύτερη γραμμή αντιγράφει πολλά αρχεία χρησιμοποιώντας χαρακτήρες υποκατάστασης.

Σε 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)
    
note

Λάβετε υπόψη ότι οι υποφάκελοι και τα περιεχόμενά τους δεν αντιγράφονται όταν χρησιμοποιούνται χαρακτήρες υποκατάστασης στο όρισμα source.


CopyFolder

Αντιγράφει έναν ή περισσότερους φακέλους από τη μια θέση σε μια άλλη. Επιστρέφει True εάν έχει αντιγραφεί τουλάχιστον ένας φάκελος, ή False εάν παρουσιάστηκε σφάλμα.

Θα προκύψει επίσης σφάλμα εάν η παράμετρος source χρησιμοποιεί χαρακτήρες υποκατάστασης και δεν ταιριάζει με κανέναν φάκελο.

Η μέθοδος σταματά αμέσως εάν συναντήσει σφάλμα. Η μέθοδος δεν επαναφέρει ούτε αναιρεί τις αλλαγές που έγιναν πριν εμφανιστεί το σφάλμα.

Σύνταξη:

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

Παράμετροι:

source: Μπορεί να είναι ένα FolderName, ή ένα NamePattern που υποδεικνύει έναν ή περισσότερους φακέλους προς αντιγραφή.

destination: Καθορίζει το FolderName στον οποίο θα αντιγραφούν οι μεμονωμένοι ή πολλοί φάκελοι που ορίζονται στην source.

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, εάν ο φάκελος δημιουργήθηκε με επιτυχία.

Εάν ο καθορισμένος φάκελος έχει έναν γονικό φάκελο που δεν υπάρχει, δημιουργείται.

Σύνταξη:

svc.CreateFolder(foldername: str): bool

Παράμετροι:

foldername (όνομα φακέλου): Μια συμβολοσειρά που αντιπροσωπεύει τον φάκελο που θα δημιουργηθεί. Εάν ο φάκελος υπάρχει ήδη, θα δημιουργηθεί μια εξαίρεση.

Παράδειγμα:


      ' 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 (αντικατάσταση): Δυαδική τιμή που καθορίζει εάν το 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)
    
note

Για να μάθετε περισσότερα σχετικά με τα ονόματα των συνόλων χαρακτήρων, επισκεφτείτε τη σελίδα Σύνολο χαρακτήρων του IANA. Λάβετε υπόψη ότι το LibreOffice δεν υλοποιεί όλα τα υπάρχοντα σύνολα χαρακτήρων.


DeleteFile

Διαγράφει ένα ή περισσότερα αρχεία. Επιστρέφει True, εάν έχει διαγραφεί τουλάχιστον ένα αρχείο, ή False εάν προέκυψε σφάλμα.

Θα προκύψει επίσης σφάλμα εάν η παράμετρος filename (όνομα αρχείου) χρησιμοποιεί χαρακτήρες υποκατάστασης και δεν ταιριάζει με κανένα αρχείο.

Τα αρχεία που θα διαγραφούν δεν πρέπει να είναι μόνο για ανάγνωση.

Η μέθοδος σταματά αμέσως εάν συναντήσει σφάλμα. Η μέθοδος δεν επαναφέρει ούτε αναιρεί τις αλλαγές που έγιναν πριν εμφανιστεί το σφάλμα.

Σύνταξη:

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 (όνομα φακέλου) χρησιμοποιεί χαρακτήρες υποκατάστασης και δεν ταιριάζει με κανέναν φάκελο.

Οι φάκελοι που θα διαγραφούν δεν πρέπει να είναι μόνο για ανάγνωση.

Η μέθοδος σταματά αμέσως εάν συναντήσει σφάλμα. Η μέθοδος δεν επαναφέρει ούτε αναιρεί τις αλλαγές που έγιναν πριν εμφανιστεί το σφάλμα.

Σύνταξη:

svc.DeleteFolder(foldername: str): bool

Παράμετροι:

foldername (όνομα φακέλου): Μπορεί να είναι ένα FolderName ή ένα NamePattern που υποδεικνύει έναν ή περισσότερους φακέλους προς διαγραφή.

Παράδειγμα:

Στα παρακάτω παραδείγματα διαγράφονται μόνο οι φάκελοι και τα περιεχόμενά τους. Τα αρχεία στον γονικό φάκελο "C:\Temp" δεν διαγράφονται.


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

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

ExtensionFolder

Επιστρέφει μια συμβολοσειρά που περιέχει το φάκελο, όπου είναι εγκατεστημένο το καθορισμένο πακέτο επέκτασης.

note

Η τρέχουσα τιμή της ιδιότητας SF_FileSystem.FileNaming χρησιμοποιείται για τον προσδιορισμό της σημειογραφίας της συμβολοσειράς που επιστρέφεται.


tip

Χρησιμοποιήστε την ιδιότητα Extensions (Επεκτάσεις) από την Platform (Πλατφόρμα) υπηρεσία λήψης πίνακα συμβολοσειρών με τα αναγνωριστικά όλων των εγκατεστημένων επεκτάσεων.


Σύνταξη:

svc.ExtensionFolder(extension: str): str

Παράμετροι:

extension (επέκταση): Μια τιμή συμβολοσειράς με το αναγνωριστικό της επέκτασης. Εάν η επέκταση δεν είναι εγκατεστημένη, δημιουργείται μια εξαίρεση.

Παράδειγμα:

Τα παρακάτω παραδείγματα σε 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

Επιστρέφει έναν πίνακα με βάση το μηδέν των αρχείων που είναι αποθηκευμένα σε έναν δεδομένο φάκελο. Κάθε καταχώρηση στον πίνακα είναι μια συμβολοσειρά που περιέχει την πλήρη διαδρομή και το όνομα του αρχείου.

Εάν το όρισμα foldername (όνομα φακέλου) καθορίζει έναν φάκελο που δεν υπάρχει, δημιουργείται μια εξαίρεση.

Ο κατάλογος που προκύπτει μπορεί να φιλτραριστεί με χαρακτήρες υποκατάστασης.

Σύνταξη:

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

Η ενσωματωμένη συνάρτηση της Basic FileLen επιστρέφει τον αριθμό των byte που περιέχονται σε ένα αρχείο ως τιμή Long, δηλαδή έως 2 GB.

Η μέθοδος 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

Επιστρέφει μια συμβολοσειρά που περιέχει το όνομα του γονικού φακέλου ενός καθορισμένου ονόματος αρχείου ή φακέλου.

Η μέθοδος δεν ελέγχει εάν υπάρχει το καθορισμένο αρχείο ή φάκελος.

Σύνταξη:

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

Επιστρέφει ένα τυχαία δημιουργημένο όνομα προσωρινού αρχείου που είναι χρήσιμο για την εκτέλεση λειτουργιών που απαιτούν ένα προσωρινό αρχείο.

Από προεπιλογή, το όνομα αρχείου που επιστρέφεται δεν έχει επέκταση. Χρησιμοποιήστε την παράμετρο επέκταση για να καθορίσετε την επέκταση του ονόματος του αρχείου που θα δημιουργηθεί.

Το τμήμα φακέλου της συμβολοσειράς που επιστρέφεται είναι ο προσωρινός φάκελος του συστήματος.

Η μέθοδος δεν δημιουργεί το προσωρινό αρχείο.

Σύνταξη:

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

Οι συναρτήσεις κατακερματισμού χρησιμοποιούνται από ορισμένους κρυπτογραφικούς αλγόριθμους, σε ψηφιακές υπογραφές, σε κωδικούς ταυτοποίησης μηνυμάτων, σε ανίχνευση απάτης, σε δακτυλικά αποτυπώματα, σε αθροίσματα ελέγχου (έλεγχος ακεραιότητας μηνυμάτων), σε πίνακες κατακερματισμού, σε αποθήκευση κωδικών πρόσβασης και πολλά άλλα.

Η μέθοδος HashFile επιστρέφει το αποτέλεσμα μιας συνάρτησης κατακερματισμού, που εφαρμόζεται σε ένα δεδομένο αρχείο και χρησιμοποιώντας έναν καθορισμένο αλγόριθμο. Η επιστρεφόμενη τιμή είναι μια συμβολοσειρά δεκαεξαδικών ψηφίων με πεζά γράμματα.

Οι αλγόριθμοι κατακερματισμού που υποστηρίζονται είναι: 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 χρησιμοποιεί χαρακτήρες υποκατάστασης και δεν ταιριάζει με κανένα αρχείο.

Η μέθοδος σταματά αμέσως εάν συναντήσει σφάλμα. Η μέθοδος δεν επαναφέρει ούτε αναιρεί τις αλλαγές που έγιναν πριν εμφανιστεί το σφάλμα.

Σύνταξη:

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

Παράμετροι:

source (προέλευση): Μπορεί να είναι ένα FileName ή NamePattern για να ορίσει ένα ή περισσότερα αρχεία προς μετακίνηση.

destination (προορισμός): Εάν η source είναι FileName, τότε αυτή η παράμετρος υποδεικνύει τη νέα διαδρομή και το όνομα αρχείου του μεταφερόμενου αρχείου.

Εάν η λειτουργία μετακίνησης περιλαμβάνει πολλά αρχεία, τότε ο destination (προορισμός) πρέπει να είναι όνομα φακέλου. Αν δεν υπάρχει, δημιουργείται.

Εάν η (προέλευση) και ο destination (προορισμός) έχουν τον ίδιο γονικό φάκελο, η μέθοδος θα μετονομάσει την source.

Οι χαρακτήρες υποκατάστασης δεν επιτρέπονται στον destination (προορισμό).

Παράδειγμα:

Στα ακόλουθα παραδείγματα μετακινούνται μόνο αρχεία, ενώ οι υποφάκελοι όχι.


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

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

MoveFolder

Μετακινεί έναν ή περισσότερους φακέλους από μια θέση σε άλλη. Επιστρέφει True (σωστό) εάν έχει μετακινηθεί τουλάχιστον ένας φάκελος ή False εάν προέκυψε σφάλμα.

Θα προκύψει επίσης σφάλμα εάν η παράμετρος source χρησιμοποιεί χαρακτήρες υποκατάστασης και δεν ταιριάζει με κανέναν φάκελο.

Η μέθοδος σταματά αμέσως εάν συναντήσει σφάλμα. Η μέθοδος δεν επαναφέρει ούτε αναιρεί τις αλλαγές που έγιναν πριν εμφανιστεί το σφάλμα.

Σύνταξη:

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

Παράμετροι:

source (προέλευση): Μπορεί να είναι ένα FolderName (Όνομα φακέλου) ή NamePattern (δείγμα ονόματος) για να ορίσει έναν ή περισσότερους φακέλους προς μετακίνηση.

destination (προορισμός): Εάν η λειτουργία μετακίνησης περιλαμβάνει έναν μόνο φάκελο, τότε ο destination είναι το όνομα και η διαδρομή του φακέλου που μετακινήθηκε και δεν πρέπει να υπάρχει.

Εάν μετακινούνται πολλοί φάκελοι, τότε ο destination (προορισμός) προσδιορίζει πού θα μετακινηθούν οι φάκελοι στην source (προέλευση). Εάν δεν υπάρχει destination, δημιουργείται.

Οι χαρακτήρες υποκατάστασης δεν επιτρέπονται στον destination (προορισμό).

Παράδειγμα:


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

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

Normalize

Επιστρέφει μια συμβολοσειρά που περιέχει το κανονικοποιημένο όνομα διαδρομής με σύμπτυξη περιττών διαχωριστικών και αναφορών ανωτέρου επιπέδου.

Για παράδειγμα, τα ονόματα διαδρομής A//B, A/B/, A/./B και A/foo/ Τα ../B κανονικοποιούνται όλα σε A/B.

Στα Windows, οι κάθετες "/" προς τα εμπρός μετατρέπονται σε κάθετες "\".

note

Η τρέχουσα τιμή της ιδιότητας 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: Υποδεικνύει τη λειτουργία εισόδου/εξόδου. Μπορεί να είναι μία από τις τρεις σταθερές: svc.ForReading (προεπιλογή), svc.ForWriting ή svc.ForAppending.

create (δημιουργία): Τιμή Μπουλ που υποδεικνύει εάν ένα νέο αρχείο μπορεί να δημιουργηθεί εάν το καθορισμένο filename (όνομα αρχείου) δεν υπάρχει:

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 (όνομα φακέλου).

Ο κατάλογος μπορεί να φιλτραριστεί με χαρακτήρες υποκατάστασης.

Σύνταξη:

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

Όλες οι ρουτίνες ή αναγνωριστικά του ScriptForge στη Basic που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζονται να χρησιμοποιηθούν σε μακροεντολές Basic ή σενάρια Python.


Παρακαλούμε, υποστηρίξτε μας!