ScriptForge . TextStream serbisyo

Ang TextStream Ang serbisyo ay ginagamit upang sunod-sunod na basahin at isulat ang mga file na binuksan o nilikha gamit ang ScriptForge.FileSystem serbisyo.

Ang mga pamamaraan OpenTextFile at CreateTextFile mula sa FileSystem serbisyo ay nagbabalik ng isang halimbawa ng TextStream serbisyo.

Maaaring tukuyin ng user ang mga line delimiter. Sa mga pagpapatakbo ng pag-input, sinusuportahan ang CR, LF o CR+LF. Sa mga pagpapatakbo ng output, ang default na line delimiter ay ang ginagamit ng operating system.

Ang line delimiter para sa operating system kung saan ang macro ay isinasagawa ay maaaring ma-access gamit ang SF_String.sfNEWLINE ari-arian.

note

Ang lahat ng mga operasyong kailangan upang magbasa mula o magsulat sa isang file (bukas, basahin/magsulat at isara) ay ipinapalagay na mangyayari sa parehong macro run.


Panawagan sa serbisyo

Ang mga halimbawa sa ibaba sa Basic at Python ay gumagamit ng OpenTextFile paraan upang lumikha ng isang halimbawa ng TextStream Serbisyo.

Sa Basic

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

Dapat na sarado ang file gamit ang CloseFile pamamaraan pagkatapos maisakatuparan ang lahat ng read or write operations:


    myFile.CloseFile()
  

Opsyonal, ang mga mapagkukunang ginagamit ng TextStream halimbawa ay maaaring ilabas gamit ang Itapon paraan:


    Set myFile = myFile.Dispose()
  
note

Ang mga pamamaraan sa TextStream ang serbisyo ay kadalasang nakabatay sa XTextInputStream at XTextOutputStream Mga interface ng UNO.


Sa Python

    from scriptforge import CreateScriptService
    fs = CreateScriptService("FileSystem")
    myFile = fs.OpenTextFile(r"C:\Temp\ThisFile.txt", fs.ForReading)
    # ...
    myFile.CloseFile()
    myFile = myFile.Dispose()
  

Mga Katangian

Pangalan

Readonly

Type

Mga nilalaman

AtEndOfStream

Mayroon

Boolean

Ginagamit sa read mode. A totoo ang halaga ay nagpapahiwatig na ang dulo ng file ay naabot na. Ang isang pagsubok gamit ang property na ito ay dapat mauna sa mga tawag sa ReadLine paraan.

Encoding

Mayroon

String

Ang set ng character na gagamitin. Ang default na encoding ay "UTF-8".

FileName

Mayroon

String

Ibinabalik ang pangalan ng kasalukuyang file alinman sa format ng URL o sa format ng native na operating system, depende sa kasalukuyang halaga ng FileNaming ari-arian ng FileSystem serbisyo.

IOMode

Mayroon

String

Isinasaad ang input/output mode. Ang mga posibleng value ay "READ", "WRITE" o "APPEND".

Line

Mayroon

Long

Ibinabalik ang bilang ng mga linyang nabasa o naisulat sa ngayon.

NewLine

Hindi

String

Itinatakda o ibinabalik ang kasalukuyang delimiter na ilalagay sa pagitan ng dalawang magkasunod na nakasulat na linya. Ang default na halaga ay ang native line delimiter sa kasalukuyang operating system.


note

Upang matuto nang higit pa tungkol sa mga pangalan ng set ng character, bisitahin ang IANA's Character Set pahina. Magkaroon ng kamalayan na hindi ipinapatupad ng LibreOffice ang lahat ng umiiral na set ng character.


Listahan ng Mga Paraan sa Serbisyo ng TextStream

CloseFile
ReadAll

ReadLine
SkipLine

WriteBlankLines
WriteLine


CloseFile

Isinasara ang kasalukuyang input o output stream at binibigyan ng laman ang output buffer kung may kaugnayan. Nagbabalik totoo kung matagumpay na naisara ang file.

Syntax:

myFile.CloseFile(): bool

ReadAll

Ibinabalik ang lahat ng natitirang linya sa stream ng teksto bilang isang string. Hindi inaalis ang mga line break.

Ang resultang string ay maaaring hatiin sa mga linya alinman sa pamamagitan ng paggamit ng Hatiin built-in Basic function kung ang line delimiter ay kilala, o may SF_String.SplitLines paraan.

Para sa malalaking file, gamit ang Basahin Lahat Ang pamamaraan ay nag-aaksaya ng mga mapagkukunan ng memorya. Sa ganitong mga kaso, inirerekumenda na basahin ang file sa bawat linya gamit ang ReadLine paraan.

Syntax:

myFile.ReadAll(): str

Halimbawa:

Isaalang-alang ang text file na "Students.txt" na may mga sumusunod na nilalaman (isang pangalan sa bawat linya):


    Herbie Peggy
    Hardy Jarrett
    Edith Lorelle
    Roderick Rosamund
    Placid Everette
  

Ang mga halimbawa sa ibaba sa Basic at Python ay gumagamit ng Basahin Lahat at SplitLines mga pamamaraan upang basahin ang mga nilalaman ng file sa isang hanay ng mga string:

Sa Basic

    'Naglo-load ng serbisyo ng FileSystem
    Dim FSO : FSO = CreateScriptService("FileSystem")
    'Nagbubukas ng text file na may mga pangalang babasahin
    Dim inputFile as Object
    Set inputFile = FSO.OpenTextFile("/home/user/Documents/Students.txt")
    'Binabasa ang lahat ng nilalaman sa input file bilang isang string
    Dim allData as String
    allData = inputFile.ReadAll()
    'Splis ang string sa isang array
    Dim arrNames as Variant
    arrNames = SF_String.SplitLines(allData)
    ' (...)
    inputFile.CloseFile()
  
Sa Python

    fs = CreateScriptService("FileSystem")
    inputFile = fs.OpenTextFile("/home/user/Documents/Students.txt")
    allData = inputFile.ReadAll()
    arrNames = allData.split(inputFile.NewLine)
    # ...
    inputFile.CloseFile()
  

ReadLine

Ibinabalik ang susunod na linya sa stream ng teksto bilang isang string. Ang mga line break ay tinanggal mula sa ibinalik na string.

Ang AtEndOfStream dapat mauna ang pagsubok sa ReadLine pamamaraan tulad ng sa halimbawa sa ibaba.

Ang isang error ay itataas kung ang AtEndOfStream ay naabot noong nakaraan ReadLine o SkipLine tawag sa pamamaraan.

Syntax:

myFile.ReadLine(): str

Halimbawa:

Sa Basic

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

    while not myFile.AtEndOfStream:
        sLine = myFile.ReadLine()
        # ...
  

SkipLine

Nilalaktawan ang susunod na linya sa input stream kapag nagbabasa ng a TextStream file.

Ang pamamaraang ito ay maaaring magresulta sa AtEndOfStream itinakda sa totoo .

Syntax:

myFile.SkipLine()

WriteBlankLines

Sumulat ng isang tinukoy na bilang ng mga walang laman na linya sa output stream.

Syntax:

myFile.WriteBlankLines(lines: int)

Mga Parameter:

mga linya : Ang bilang ng mga walang laman na linya na isusulat sa file.

WriteLine

Isinulat ang ibinigay na string sa output stream bilang isang linya.

Ang karakter na tinukoy sa BagongLine Ang ari-arian ay ginagamit bilang line delimiter.

Syntax:

myFile.WriteLine(line: str)

Mga Parameter:

linya : Ang linyang isusulat, maaaring walang laman.

Halimbawa:

Ang mga halimbawa sa ibaba sa Basic at Python ay lumikha ng isang text file sa CSV na format kung saan ang bawat linya ay naglalaman ng isang halaga at ang parisukat nito hanggang lastValue ay naabot.

Sa Basic

    Sub SquaredValuesFile(lastValue as Integer)
        'Isinasagawa ang Serbisyo ng FileSystem
        Dim FSO as Variant : FSO = CreateScriptService("FileSystem")
        'Gumagawa ng text file
        Dim myFile as Variant : myFile = FSO.CreateTextFile("/home/user/Documents/squares.csv")
        'Isinulat ang Halaga at Halaga na parisukat, na pinaghihiwalay ng ";"
        Dim value as Integer
        myFile.WriteLine("Value;Value Squared")
        For value = 1 To lastValue
            myFile.WriteLine(value & ";" & value ^ 2)
        Next value
        'Isinasara ang file at mga libreng mapagkukunan
        myFile.CloseFile()
        Set myFile = myFile.Dispose()
    End Sub
  
Sa Python

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

Lahat ScriptForge Ang mga pangunahing gawain o identifier na may prefix na may underscore na character na "_" ay nakalaan para sa panloob na paggamit. Ang mga ito ay hindi nilalayong gamitin sa Basic macros o Python script.


Mangyaring suportahan kami!