Vsebina
Kazalo 🔎︎

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

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)

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()

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.

Č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

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

Podobne teme

Storitev ScriptForge.FileSystem service

Funkcija Input

Ukaz Open