LibreOffice 25.2 Βοήθεια
Η υπηρεσία TextStream χρησιμοποιείται για τη διαδοχική ανάγνωση και εγγραφή σε αρχεία που ανοίγονται ή δημιουργούνται χρησιμοποιώντας την υπηρεσία ScriptForge.FileSystem.
Οι μέθοδοι OpenTextFile και CreateTextFile από την υπηρεσία FileSystem επιστρέφουν μια παρουσία της υπηρεσίας TextStream.
Οι οριοθέτες γραμμής μπορούν να καθοριστούν από τον χρήστη. Στις λειτουργίες εισόδου υποστηρίζονται τα CR, LF ή CR+LF. Στις λειτουργίες εξόδου, το προεπιλεγμένο διαχωριστικό γραμμής είναι αυτό που χρησιμοποιείται από το λειτουργικό σύστημα.
Ο οριοθέτης γραμμής για το λειτουργικό σύστημα όπου εκτελείται η μακροεντολή μπορεί να προσπελαστεί χρησιμοποιώντας την ιδιότητα SF_String.sfNEWLINE.
Όλες οι λειτουργίες που απαιτούνται για την ανάγνωση ή την εγγραφή σε ένα αρχείο (άνοιγμα, ανάγνωση/εγγραφή και κλείσιμο) θεωρείται ότι πραγματοποιούνται κατά την ίδια εκτέλεση μακροεντολής.
Τα παρακάτω παραδείγματα σε Basic και Python χρησιμοποιούν τη μέθοδο OpenTextFile για να δημιουργήσουν μια παρουσία της υπηρεσίας TextStream.
    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim FSO As Variant
    FSO = CreateScriptService("FileSystem")
    Set myFile = FSO.OpenTextFile("C:\Temp\ThisFile.txt", FSO.ForReading)
  Το αρχείο πρέπει να κλείσει με τη μέθοδο CloseFile αφού έχουν εκτελεστεί όλες οι λειτουργίες ανάγνωσης ή εγγραφής:
    myFile.CloseFile()
  Προαιρετικά, οι πόροι που χρησιμοποιούνται από την παρουσία TextStream μπορούν να απελευθερωθούν χρησιμοποιώντας τη μέθοδο Dispose:
    Set myFile = myFile.Dispose()
  Οι μέθοδοι στην υπηρεσία TextStream βασίζονται κυρίως στις διεπαφές UNO XTextInputStream και XTextOutputOextlie .
    from scriptforge import CreateScriptService
    fs = CreateScriptService("FileSystem")
    myFile = fs.OpenTextFile(r"C:\Temp\ThisFile.txt", fs.ForReading)
    # ...
    myFile.CloseFile()
    myFile = myFile.Dispose()
  | Όνομα | Μόνο για ανάγνωση | Τύπος | Περιγραφή | 
|---|---|---|---|
| AtEndOfStream | Ναι | Boolean | Χρησιμοποιείται σε λειτουργία ανάγνωσης. Η τιμή True υποδηλώνει ότι έχει φτάσει το τέλος του αρχείου. Μια δοκιμή που χρησιμοποιεί αυτήν την ιδιότητα θα πρέπει να προηγείται των κλήσεων στη μέθοδο ReadLine. | 
| Encoding | Ναι | String | Το σύνολο χαρακτήρων που θα χρησιμοποιηθεί. Η προεπιλεγμένη κωδικοποίηση είναι "UTF-8". | 
| FileName | Ναι | String | Επιστρέφει το όνομα του τρέχοντος αρχείου, είτε σε μορφή URL, είτε στη μορφή του εγγενούς λειτουργικού συστήματος, ανάλογα με την τρέχουσα τιμή της ιδιότητας FileNaming της υπηρεσίας FileSystem. | 
| IOMode | Ναι | String | Υποδεικνύει τη λειτουργία εισόδου/εξόδου. Πιθανές τιμές είναι "READ", "WRITE" ή "APPEND". | 
| Line | Ναι | Long | Επιστρέφει τον αριθμό των γραμμών που διαβάστηκαν ή γράφτηκαν μέχρι στιγμής. | 
| NewLine | Όχι | String | Ορίζει ή επιστρέφει τον τρέχοντα οριοθέτη που θα εισαχθεί μεταξύ δύο διαδοχικών γραπτών γραμμών. Η προεπιλεγμένη τιμή είναι ο εγγενής διαχωριστής γραμμής στο τρέχον λειτουργικό σύστημα. | 
Για να μάθετε περισσότερα σχετικά με τα ονόματα των συνόλων χαρακτήρων, επισκεφτείτε τη σελίδα Σύνολο χαρακτήρων του IANA. Λάβετε υπόψη ότι το LibreOffice δεν υλοποιεί όλα τα υπάρχοντα σύνολα χαρακτήρων.
| Κατάλογος μεθόδων στην υπηρεσία TextStream | ||
|---|---|---|
Κλείνει την τρέχουσα ροή εισόδου ή εξόδου και αδειάζει την προσωρινή μνήμη εξόδου, εάν χρειάζεται. Επιστρέφει True εάν το αρχείο έκλεισε με επιτυχία.
myFile.CloseFile(): bool
Επιστρέφει όλες τις υπόλοιπες γραμμές στη ροή κειμένου ως μία συμβολοσειρά. Οι αλλαγές γραμμής δεν αφαιρούνται.
Η συμβολοσειρά που προκύπτει μπορεί να χωριστεί σε γραμμές είτε χρησιμοποιώντας την ενσωματωμένη συνάρτηση Basic Split, εάν ο οριοθέτης γραμμής είναι γνωστός, είτε με τη μέθοδο SF_String.SplitLines.
Για μεγάλα αρχεία, η χρήση της μεθόδου ReadAll σπαταλά πόρους μνήμης. Σε τέτοιες περιπτώσεις, συνιστάται η ανάγνωση του αρχείου γραμμή προς γραμμή χρησιμοποιώντας τη μέθοδο ReadLine.
myFile.ReadAll(): str
Εξετάστε το αρχείο κειμένου "Students.txt" με τα ακόλουθα περιεχόμενα (ένα όνομα σε κάθε γραμμή):
    Herbie Peggy
    Hardy Jarrett
    Edith Lorelle
    Roderick Rosamund
    Placid Everette
  Τα παρακάτω παραδείγματα σε Basic και Python χρησιμοποιούν τις μεθόδους ReadAll και SplitLines για να διαβάσουν τα περιεχόμενα του αρχείου σε μια σειρά από συμβολοσειρές:
    'Φορτώνει την υπηρεσία FileSystem
    Dim FSO : FSO = CreateScriptService("FileSystem")
    'Ανοίγει το αρχείο κειμένου με τα ονόματα προς ανάγνωση
    Dim inputFile as Object
    Set inputFile = FSO.OpenTextFile("/home/user/Documents/Students.txt")
    'Διαβάζει όλα τα περιεχόμενα στο αρχείο εισόδου ως μία συμβολοσειρά
    Dim allData as String
    allData = inputFile.ReadAll()
    'Διαιρεί τη συμβολοσειρά σε έναν πίνακα
    Dim arrNames as Variant
    arrNames = SF_String.SplitLines(allData)
    ' (...)
    inputFile.CloseFile()
  
    fs = CreateScriptService("FileSystem")
    inputFile = fs.OpenTextFile("/home/user/Documents/Students.txt")
    allData = inputFile.ReadAll()
    arrNames = allData.split(inputFile.NewLine)
    # ...
    inputFile.CloseFile()
  Επιστρέφει την επόμενη γραμμή στη ροή κειμένου ως συμβολοσειρά. Οι αλλαγές γραμμής αφαιρούνται από την επιστρεφόμενη συμβολοσειρά.
Η δοκιμή AtEndOfStream θα πρέπει να προηγείται της μεθόδου ReadLine όπως στο παρακάτω παράδειγμα.
Θα προκύψει σφάλμα εάν επιτεύχθηκε το AtEndOfStream κατά την προηγούμενη κλήση της μεθόδου ReadLine ή SkipLine.
myFile.ReadLine(): str
    Dim sLine As String
    Do While Not myFile.AtEndOfStream
        sLine = myFile.ReadLine()
        ' (...)
    Loop
  
    while not myFile.AtEndOfStream:
        sLine = myFile.ReadLine()
        # ...
  Παραλείπει την επόμενη γραμμή στη ροή εισόδου κατά την ανάγνωση ενός αρχείου TextStream.
Αυτή η μέθοδος μπορεί να έχει ως αποτέλεσμα το AtEndOfStream να οριστεί σε True.
myFile.SkipLine()
Γράφει έναν καθορισμένο αριθμό κενών γραμμών στη ροή εξόδου.
myFile.WriteBlankLines(lines: int)
lines (γραμμές): Ο αριθμός των κενών γραμμών για εγγραφή στο αρχείο.
Γράφει τη δεδομένη συμβολοσειρά στη ροή εξόδου ως μία μοναδική γραμμή.
Ο χαρακτήρας που ορίζεται στην ιδιότητα NewLine χρησιμοποιείται ως οριοθέτης γραμμής.
myFile.WriteLine(line: str)
line (γραμμή): Η γραμμή που θέλετε να γράψετε μπορεί να είναι κενή.
Τα παρακάτω παραδείγματα σε Basic και Python δημιουργούν ένα αρχείο κειμένου σε μορφή CSV, στο οποίο κάθε γραμμή περιέχει μια τιμή και το τετράγωνό της μέχρι να επιτευχθεί η lastValue.
    Sub SquaredValuesFile(lastValue as Integer)
        'Δημιουργεί την υπηρεσία FileSystem
        Dim FSO as Variant : FSO = CreateScriptService("FileSystem")
        'Δημιουργεί ένα αρχείο κειμένου
        Dim myFile as Variant : myFile = FSO.CreateTextFile("/home/user/Documents/squares.csv")
        'Γράφει την τιμή και την τιμή στο τετράγωνο, διαχωρισμένες με ";"
        Dim value as Integer
        myFile.WriteLine("Value;Value Squared")
        For value = 1 To lastValue
            myFile.WriteLine(value & ";" & value ^ 2)
        Next value
        'Κλείνει το αρχείο και ελευθερώνει πόρους
        myFile.CloseFile()
        Set myFile = myFile.Dispose()
    End Sub
  
    def squared_values_file(lastValue):
        fs = CreateScriptService("FileSystem")
        myFile = fs.CreateTextFile("/home/user/Documents/squares.csv")
        myFile.WriteLine("Value;Value Squared")
        for value in range(1, lastValue + 1):
            myFile.WriteLine("{};{}".format(value, value ** 2))
        myFile.CloseFile()
        myFile = myFile.Dispose()