ScriptForge.TextStream zerbitzua

TextStream zerbitzua ScriptForge.FileSystem zerbitzuaren bidez ireki edo sortu diren fitxategiak sekuentzialki irakurtzeko edo idazteko erabiltzen da.

FileSystem zerbitzuaren OpenTextFile eta CreateTextFile metodoek TextStream zerbitzuaren instantzia bat itzultzen dute.

Erabiltzaileak lerro-mugatzaileak zehaztu ditzakte. Sarrerako eragiketetan, CR, LF edo CR+LF onartzen dira. Irteerako eragiketetan, sistema eragileak erabiltzen duen lerro-mugatzailea erabiliko da modu lehenetsian.

Makroa exekutatzen ari den sistema eragilearen lerro-mugatzailea atzitzeko, erabili SF_String.sfNEWLINE propietatea.

note

Fitxategi bat irakurtzeko edo idazteko behar diren eragiketa guztiak (ireki, irakurri/idatzi eta itxi) makroa exekutatzen den unean gertatzen direla suposatzen da.


Zerbitzuari deitzea

Beheko kode-zatiak, Basi eta Python lengoaietan, OpenTextFile metodoa darabil TextStream zerbitzuaren instantzia bat sortzeko.

Basic lengoaian

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

Fitxategia itxi egin behar da, CloseFile metodoa erabilita, irakurtzeko edo idazteko eragiketa guztiak exekutatu ondoren:


    myFile.CloseFile()
  

Aukeran, TextStream instantziak erabilitako baliabideak askatu egin daitezke Dispose metodoaren bidez:


    Set myFile = myFile.Dispose()
  
note

TextStream zerbitzuko metodoak XTextInputStream eta XTextOutputStream UNO interfazeetan daude oinarrituta gehien bat.


Python lengoaian

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

Propietateak

Izena

Irakurtzeko soilik

Mota

Deskribapena

AtEndOfStream

Bai

Boolean

Irakurtzeko moduan erabilia. True balioak adierazten du fitxategiaren amaiera iritsi dela. Propietate hau darabilen proba bat erabili beharko litzateke ReadLine metodoari egindako deien aurretik.

Encoding

Bai

String

Erabiliko den karaktere-jokoa. Kodeketa lehenetsia "UTF-8" da.

FileName

Bai

String

Uneko fitxategiaren izena URL formatuan edo sistema eragilearen jatorrizko formatuan itzultzen du, FileSystem zerbitzuaren FileNaming propietatearen balioa zein den kontuan hartuta.

IOMode

Bai

String

Sarrerako/irteerako modua adierazten du. Balio posibleak "READ", "WRITE" edo "APPEND" dira.

Line

Bai

Long

Momentura arte irakurritako edo idatzitako lerro kopurua itzultzen du.

NewLine

Ez

String

Elkarren jarraian idatzitako bi lerroren artean txertatuko den uneko mugatzailea ezartzen edo itzultzen du. Balio lehenetsia uneko sistema eragilearen jatorrizko lerro-mugatzailea da.


note

Karaktere jokoen izenei buruz gehiago jakiteko, begiratu IANAren karaktere jokoen orria. Kontuan izan LibreOffice aplikazioak ez dituela karaktere joko guztiak inplementatu.


TextStream zerbitzuaren metodoen zerrenda

CloseFile
ReadAll

ReadLine
SkipLine

WriteBlankLines
WriteLine


CloseFile

Uneko sarrerako edo irteerako korrontea ixten du eta irteerako bufferra husten du, beharrezkoa bada. True itzuliko du fitxategia ongi itxi bada.

Sintaxia:

myFile.CloseFile(): bool

ReadAll

Testu-korrontean geratzen diren lerro guztiak kate bakar gisa itzultzen ditu. Lerro-jauziak ez dira kenduko.

Emaitza gisa lortutako katea lerroetan zatitu daiteke, bai integratutako Split Basic funtzioaren bidez lerro-mugatzailea ezaguna bada, bai SF_String.SplitLines metodoaren bidez.

Fitxategi handien kasuan, ReadAll metodoa erabiltzen bada memoria-baliabideak alferrik galtzen dira. Kasu horietan, hobe da fitxategia lerroz lerro irakurtzea ReadLine metodoaren bidez.

Sintaxia:

myFile.ReadAll(): str

Adibidea:

Adibidez, demagun "Students.txt" fitxategiak honako edukiak dituela (izen bana lerro bakoitzean):


    Herbie Peggy
    Hardy Jarrett
    Edith Lorelle
    Roderick Rosamund
    Placid Everette
  

Beheko adibideak, Basic eta Python lengoaietan, ReadAll eta SplitLines metodoak erabiltzen ditu fitxategi baten edukiak irakurri eta kateen matrize batean jartzeko:

Basic lengoaian

    ' FileSystem zerbitzua kargatzen du
    Dim FSO : FSO = CreateScriptService("FileSystem")
    ' Irakurri behar diren izenak dituen testu-fitxategia irekitzen du
    Dim inputFile as Object
    Set inputFile = FSO.OpenTextFile("/home/user/Documents/Students.txt")
    'Sarrerako fitxategiko eduki guztiak kate bakar gisa irakurtzen ditu
    Dim allData as String
    allData = inputFile.ReadAll()
    'Katea matrize batean zatitzen du
    Dim arrNames as Variant
    arrNames = SF_String.SplitLines(allData)
    ' (...)
    inputFile.CloseFile()
  
Python lengoaian

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

ReadLine

Hurrengo lerroa itzultzen du testu-korrontea kate bat bada. Lerro-jauziak ezabatu egingo dira itzulitako fitxategitik.

AtEndOfStream probak ReadLine metodoaren aurretik egon behar du, beheko adibidean bezala.

Errore bat sortuko da AtEndOfStream iristen bada aurreko ReadLine edo SkipLine metodoari deitu baino lehen.

Sintaxia:

myFile.ReadLine(): str

Adibidea:

Basic lengoaian

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

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

SkipLine

Sarrera-korronteko hurrengo lerroa saltatzen du TextStream fitxategi bat irakurtzean.

Metodo honen emaitza izan daiteke AtEndOfStream propietatean True ezartzea.

Sintaxia:

myFile.SkipLine()

WriteBlankLines

Lerro hutsen kopuru zehatz bat idazten du irteera-korrontean.

Sintaxia:

myFile.WriteBlankLines(lines: int)

Parametroak:

lines: Idatziko den lerro hutsen kopurua.

WriteLine

Emandako katea irteera-korrontean idazten du lerro bakar gisa.

NewLine propietatean definitutako karakterea lerro-mugatzaile gisa erabiliko da.

Sintaxia:

myFile.WriteLine(line: str)

Parametroak:

line: Idatziko den lerroa, hutsik egon daiteke.

Adibidea:

Beheko adibideetan, Basic eta Python lengoaietan, testu-fitxategi bat sortzen da CSV formatuan, non lerro bakoitzak balio bat eta bere karratua dituen, lastValue baliora iritsi arte.

Basic lengoaian

    Sub SquaredValuesFile(lastValue as Integer)
        'FileSystem zerbitzuaren instantzia bat sortzen du
        Dim FSO as Variant : FSO = CreateScriptService("FileSystem")
        'Testu-fitxategi bat sortzen du
        Dim myFile as Variant : myFile = FSO.CreateTextFile("/home/user/Documents/squares.csv")
        ' 'Balioa' eta 'Balio karratua' balioak idazten ditu, ";" ikurrarekin bananduta
        Dim value as Integer
        myFile.WriteLine("Balioa;Balio karratua")
        For value = 1 To lastValue
            myFile.WriteLine(value & ";" & value ^ 2)
        Next value
        'Fitxategia ixten du eta baliabideak askatzen ditu
        myFile.CloseFile()
        Set myFile = myFile.Dispose()
    End Sub
  
Python lengoaian

    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

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.


Emaguzu laguntza!