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!