Storitev ScriptForge.TextStream

Storitev TextStream se uporablja za zaporedno branje in pisanje v datoteke, odprte ali ustvarjene s storitvijo ScriptForge.FileSystem.

Metodi OpenTextFile in CreateTextFile iz storitve FileSystem vrneta instanco storitve TextStream.

Ločila vrstic lahko določi uporabnik. Pri vhodnih operacijah so podprti CR, LF in CR+LF. Pri izhodnih operacijah je privzeto ločilo vrstic tisto, ki ga uporablja operacijski sistem.

Do ločila vrstic za operacijski sistem, v katerem se izvaja makro, lahko dostopate z lastnostjo SF_String.sfNEWLINE.

note

Za vse operacije, ki potrebujejo branje ali pisanje v datoteko (odpri, beri/piši in zapri), predvidevamo, da se izvršijo med isto izvedbo makra.


Ustvarjanje instance storitve

Spodnji odlomek kode uporablja metodo OpenTextFile, da ustvari instanco storitve TextStream.


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

Ta storitev je v celoti podprta v jezikih Basic in Python. Vsi primeri so zapisani v programskem jeziku Basic in jih lahko enostavno pretvorite v Python.


Po izvedbi vseh operacij branja ali pisanja mora biti datoteka zaprta z metodo CloseFile:


      myFile.CloseFile()
    

Po želji lahko vire, ki jih uporablja instanca TextStream, sprostite z uporabo metode Dispose:


      Set myFile = myFile.Dispose()
    
note

Metode v storitvi TextStream večinoma temeljijo na vmesnikih UNO XTextInputStream in XTextOutputStream.


Lastnosti

Ime

Samo za branje

Vrsta

Opis

AtEndOfStream

Da

Boolean

Uporabljeno v načinu branja. Vrednost True kaže, da je dosežen konec datoteke. Metodo ReadLine bi moral predhajati preizkus te lastnosti.

Encoding

Da

String

Nabor znakov, ki naj bo uporabljen. Privzeta kodiranje je »UTF-8«.

FileName

Da

String

Vrne ime trenutne datoteke v zapisu URL ali v domorodnem zapisu operacijskega sistema, odvisno od trenutne vrednosti lastnosti FileNaming storitve FileSystem.

IOMode

Da

String

Označuje vhodni/izhodni način. Možne vrednosti so "READ", "WRITE" in "APPEND".

Line

Da

Long

Vrne število doslej prebranih ali zapisanih vrstic.

NewLine

Ne

String

Določi ali vrne trenutno ločilo za vstavljanje med dve zaporedni zapisani vrstici. Privzeta vrednost je domorodno ločilo vrstic trenutnega operacijskega sistema.


note

Če želite izvedeti več o imenih naborov znakov, si oglejte stran Nabori znakov IANA (IANA's Character Set) (v angl.). Upoštevajte, da LibreOffice ne podpira vseh obstoječih naborov znakov.


Seznam metod storitve TextStream

CloseFile
ReadAll

ReadLine
SkipLine

WriteBlankLines
WriteLine


CloseFile

Zapre trenutni vhodni ali izhodni tok in izprazni izhodni medpomnilnik, če je potrebno. Vrne True, če je bila datoteka uspešno zaprt.

Skladnja:


        myFile.CloseFile() As Boolean
    

ReadAll

Vrne vse preostale vrstice v toku besedila kot posamezen niz. Prelomi vrstic niso odstranjeni.

Vrnjeni niz je lahko razdeljen po vrsticah z uporabo vgrajene funkcije Basic Split, če je ločilo vrstic znano, ali z metodo SF_String.SplitLines.

Raba metode ReadAll z velikimi datotekami močno obremenjuje vire pomnilnika. V takšnih primerih je priporočeno brati datoteko vrstico za vrstico z metodo ReadLine.

Skladnja:


        myFile.ReadAll() As String
    

Primer:

Vzemimo besedilno datoteko "Students.txt" z naslednjo vsebino (ime v vsaki vrstici):


      Herbie Peggy
      Hardy Jarrett
      Edith Lorelle
      Roderick Rosamund
      Placid Everette
    

Spodnji primer uporablja metodi ReadAll in SplitLines za branje vsebine datoteke v polje nizov:


      Sub ReadFile_Example
          'Naloži storitev FileSystem
          Dim FSO : FSO = CreateScriptService("FileSystem")
          'Odpre besedilno datoteko z imeni, ki bodo prebrana
          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

Vrne naslednjo vrstico v besedilnem toku kot niz. Prelomi vrstice so iz vrnjenega niza odstranjeni.

Preizkus AtEndOfStream mora predhajati metodo ReadLine, tako kot v spodnjem primeru.

Javi napako, če je doseglo AtEndOfStream med prejšnjim klicem metode ReadLine ali SkipLine.

Skladnja:


        myFile.ReadLine() As String
    

Primer:


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

SkipLine

Preskoči naslednjo vrstico v vhodnem toku pri branju datoteke TextStream.

Ta metoda lahko konča s AtEndOfStream, nastavljeno na vrednost True.

Skladnja:


        myFile.SkipLine()
    

WriteBlankLines

Zapiše navedeno število praznih vrstic v izhodni tok.

Skladnja:


        myFile.WriteBlankLines(Lines As Long)
    

Parametri:

Lines: število praznih vrstic, ki jih želite zapisati.

WriteLine

Zapiše dani niz v izhodni tok kot eno samo vrstico.

Znak, določen z lastnostjo NewLine, rabi kot ločilo vrstic.

Skladnja:


        myFile.WriteLine(Line As String)
    

Parametri:

Line: vrstica, ki jo želite zapisati, lahko je prazno.

Primer:


      Sub SquaredValuesFile(lastValue as Integer)
          'Ustvari instanco storitve FileSystem
          Dim FSO as Variant : FSO = CreateScriptService("FileSystem")
          'Ustvari besedilno datoteko
          Dim myFile as Variant : myFile = FSO.CreateTextFile("~/Documents/squares.csv")
          'Zapiše Vrednost in Kvadrat vrednosti, ločeni z ";"
          Dim value as Integer
          myFile.WriteLine("Vrednost;Kvadrat vrednosti")
          For value = 1 To lastValue
              myFile.WriteLine(value & ";" & value ^ 2)
          Next value
          'Zapre datoteko in sprosti vire
          myFile.CloseFile()
          myFile.Dispose()
      End Sub
    
warning

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.


Podprite nas!