Tjenesten ScriptForge.TextStream (tekst-strøm)

Tjenesten TextStream bruges til fortløbende at læse og skrive i de filer, der er åbnet eller oprettet med tjenesten ScriptForge.FileSystem.

Metoderne OpenTextFile (åbn tekstfil) og CreateTextFile (opret tekstfil) fra tjenesten FileSystem (filsystem) returnerer en forekomst af tjenesten TextStream (tekst-strøm).

Linjeskilletegn kan være angivet af brugeren. I input-handlinger understøttes CR, LF eller CR+LF. I output-handlinger er standard-linjetegnet det, der bruges af operativsystemet.

Linjeskilletegnet i det operativsystem, hvor makroen bliver udført, kan tilgås med egenskaben SF_String.sfNEWLINE (ny linje).

note

Alle handlinger, der er nødvendige til at læse fra og skrive til en fil (åbne, læse/skrive og lukke) antages at finde sted under den samme makrokørsel.


Instantiering af en tjeneste

Kodestumpen herunder bruger metoden OpenTextFile til at oprette en forekomst af tjenesten TextStream.


        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim FSO As Variant
        FSO = CreateScriptService("FileSystem")
        Set myFile = FSO.OpenTextFile("C:\Temp\ThisFile.txt", FSO.ForReading)
    
note

This service is fully supported in both Basic and Python languages. All examples are expressed using the Basic programming language and can be easily converted to Python.


Filen skal lukkes med metoden CloseFile (luk fil), efter at alle læse- og skrive-handlinger er udført:


      myFile.CloseFile()
    

Ressourcerne, der blev brugt af forekomsten af TextStream (tekst-strøm) kan valgfrit frigives med metoden Dispose (kassér):


      Set myFile = myFile.Dispose()
    
note

Metoderne i tjenesten TextStream (tekst-strøm) er hovedsagelig baseret på XTextInputStream (x tekst input strøm) og XTextOutputStream (x tekst output strøm) UNO-brugerflader.


Properties (egenskaber)

Navn (navn)

Readonly (skrivebeskyttet)

Type (type)

Description (beskrivelse)

AtEndOfStream

Yes (ja)

Boolean

Brugt i læsetilstand. Værdien True (sand) påpeger at slutningen af filen er nået. En test med denne egenskab bør gå forud for kald af metoden ReadLine (læs linje).

Encoding

Yes (ja)

String

Tegnsættet, der skal bruges. Standard-tegnsættet er "UTF-8".

FileName

Ja

String

Returnerer navnet på den aktuelle fil i enten URL-format eller i operativsystemets format, afhængigt af den aktuelle værdi af egenskaben FileNaming (Filnavngivelse) i tjenesten FileSystem (Filsystem).

IOMode

Yes (ja)

String

Viser input/output-tilstanden. Mulige værdier er "READ" (læs), "WRITE" (skriv) eller "APPEND" (tilføj).

Line

Yes (ja)

Long

Returnerer antallet af hidtil læste eller skrevne linjer.

NewLine

Nej

String

Sætter eller returnerer det aktuelle skilletegn, der skal indsættes mellem to på hinanden følgende linjer. Standardværdien er det aktuelle operativsystems eget linjeskilletegn.


note

For at se mere om tegnsættenes navne besøger du siden IANA's Character Set (tegnsæt). Vær opmærksom på, at LibreOffice ikke implementerer alle eksisterende tegnsæt.


Liste over metoderne i tjenesten TextStream (tekst-strøm)

CloseFile
ReadAll

ReadLine
SkipLine

WriteBlankLines
WriteLine


CloseFile

Lukker den aktuelle input- eller output-strøm og tømmer output-bufferen, hvis det er relevant. Returnerer True (sand), hvis filen blev lukket med succes.

Syntaks:


        myFile.CloseFile() As Boolean
    

ReadAll

Returnerer alle resterende linjer i tekststrømmen som en enkelt streng. Linjeskift fjernes ikke.

Den resulterende streng kan deles op i linjer med den indbyggede Basic-funktion Split (opdel), hvis linjeskilletegnet er kendt, eller med metoden SF_String.SplitLines (opdel linjer).

Ved større filer spilder brug af metoden ReadAll (læs alt) hukommelsesressourcer. I sådanne tilfælde anbefales det at læse filen linjevis med metoden ReadLine (læs linje).

Syntaks:


        myFile.ReadAll() As String
    

Eksempel:

Tænk på tekstfilen "Students.txt" med dette indhold (et navn på hver linje):


      Herbie Peggy
      Hardy Jarrett
      Edith Lorelle
      Roderick Rosamund
      Placid Everette
    

Eksemplet herunder bruger metoderne ReadAll (læs alt) og SplitLines (opdel linjer) til at hente filens indhold ind i en matrix af strenge:


      Sub ReadFile_Example
          'Henter tjenesten FileSystem
          Dim FSO : FSO = CreateScriptService("FileSystem")
          'Åbner tekstfilen med de navne, der skal læses
          Dim inputFile as Object
          Set inputFile = FSO.OpenTextFile("~/Documents/Students.txt")
          'Reads all the contents in the input file as a single string
          Dim allData as String
          allData = inputFile.ReadAll()
          'Splits the string into an array
          Dim arrNames as Variant
          arrNames = SF_String.SplitLines(allData)
          ' (...)
          inputFile.CloseFile()
      End Sub
    

ReadLine

Returnerer den næste linje i tekststrømmen som en streng. Linjeskift fjernes fra den returnerede streng.

Testen AtEndOfStream (ved slut på strøm) bør gå forud for metoden ReadLine (læs linje) som i eksemplet herunder.

Der sættes et fejlflag, hvis AtEndOfStream (ved slut på strøm) blev nået under det forrige kald af metoderne ReadLine (læs linje) eller SkipLine (spring over linje).

Syntaks:


        myFile.ReadLine() As String
    

Eksempel:


        Dim sLine As String
        Do While Not myFile.AtEndOfStream
            sLine = myFile.ReadLine()
            ' (...)
        Loop
    

SkipLine

Springer den næste linje i input-strømmen over under læsning af enTextStream (tekst-strøm)-fil.

Denne metode kan resultere i, at AtEndOfStream (ved slut på strømmen) sættes til True (sand).

Syntaks:


        myFile.SkipLine()
    

WriteBlankLines

Skriver et angivet antal tomme linjer til output-strømmen.

Syntaks:


        myFile.WriteBlankLines(Lines As Long)
    

Parametre:

Lines (Linjer): Antallet af tomme linjer, der skal skrives.

WriteLine

Skriver den givne streng til output-strømmen som en enkelt linje.

Tegnet, der er defineret i egenskaben NewLine (ny linje) bruges som linjeskilletegn.

Syntaks:


        myFile.WriteLine(Line As String)
    

Parametre:

Line (Linje): Linjen, der skal skrives; kan være tom.

Eksempel:


      Sub SquaredValuesFile(lastValue as Integer)
          'Instantierer tjenesten FileSystem
          Dim FSO as Variant : FSO = CreateScriptService("FileSystem")
          'Opretter en tekstfil
          Dim myFile as Variant : myFile = FSO.CreateTextFile("~/Documents/squares.csv")
          'Skriver værdien og kvadratet af værdien, adskilt af ";"
          Dim value as Integer
          myFile.WriteLine("Value;Value Squared") (min fil.Skriv linje ("værdi, kvadrat af værdi)
          For value = 1 To lastValue
              myFile.WriteLine(value & ";" & value ^ 2)
          Next value
          'Lukker filen og frigør ressourcer
          myFile.CloseFile()
          myFile.Dispose()
      End Sub
    
warning

Alle ScriptForge Basic-rutiner eller identifikatorer, som indledes med et understregningstegn "_" er reserveret til internt brug. De er ikke beregnet til brug i Basic-makroer.


Støt os venligst!