Van gegevensbestand lezen

Leest gegevens van een geopend gegevensbestand.

Opties 

  • Bestands-ID is een numerieke uitdrukking die de bestands-ID van een geopend gegevensbestand aangeeft. Raadpleeg Gegevensbestand openen scriptstap.
  • Grootte geeft het aantal te lezen bytes aan als Lezen als UTF-8 of Bytes is. Bij UTF-16 is Grootte het aantal te lezen Unicode-code-eenheid. Als de Grootte niet is opgegeven (op niets ingesteld), wordt het hele bestand gelezen.
  • Doel is het veld of de variabele waarin de gegevens die van het bestand zijn gelezen, worden opgeslagen.
  • Lezen als geeft de tekencodering van het bestand aan.
    • UTF-16 is de standaard 16-bits Unicode-tekencodering (UTF-16 little endian) van FileMaker.
    • UTF-8 is 8-bits Unicode-tekencodering.
    • Bytes heeft geen specifieke tekencodering, maar leest in plaats daarvan één byte tegelijk. Als het doel een variabele of containerveld is, worden gegevens die van het bestand zijn gelezen, opgeslagen als containergegevens met dezelfde bestandsnaam als het opgegeven bestand.

Compatibiliteit 

Product Ondersteund
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Nee
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Nee
Custom Web Publishing Ja

Afkomstig uit versie 

18.0

Beschrijving 

Deze scriptstap leest gegevens die worden opgegeven door Grootte, vanaf de huidige positie voor lezen/schrijven, of leest het gehele bestand als Grootte niet is opgegeven. Raadpleeg Positie gegevensbestand instellen.

De maximale hoeveelheid gegevens die deze scriptstap tegelijk kan lezen, is 64 MB. Als een bestand groter is dan 64 MB, kunt u deze scriptstap meerdere keren uitvoeren. Dan wordt er per keer een hoeveelheid van niet meer dan 64 MB gelezen.

Opmerkingen 

  • De prestaties zijn het beste wanneer er niet meer dan 64 KB moet worden gelezen.
  • Bij het lezen van Unicode-tekst van een gedeelte van een bestand, kan er slechts een deel van een teken worden gelezen als het teken bestaat uit meerdere code-eenheden. Als u verwacht tekst te lezen van een UTF-8- of UTF-16-bestand, is het mogelijk veiliger om het hele bestand in één keer te lezen, tenzij u zeker bent van het aantal code-points per teken.

Voorbeeld 1 

Dit voorbeeldscript leest de inhoud van een geopend bestand met een bestands-ID van 2 en slaat de gegevens op in een variabele.

Kopiëren
Van gegevensbestand lezen [ Bestands-ID: 2 ; Grootte (bytes): ; Doel: $variabele ; Lezen als: Bytes ]

Voorbeeld 2 

Dit voorbeeldscript controleert of er een bestand met de naam wijziging.log voorkomt in de map Documenten. Als dit het geval is, leest het voorbeeld de eerste 100 UTF8-code-eenheden in het tekstveld Hulpprogramma’s::Log-invoer

Kopiëren
Variabele instellen [ $bestand ; Waarde: Get (DocumentPad) & "wijziging.log" ]
Informatie over bestaan van bestand ophalen [ "$bestand" ; Doel: $bestaanBestand ]
If [ niet $bestaanBestand ]
    Script afsluiten [Tekstresultaat: ]
End If
Gegevensbestand openen [ "$bestand" ; Doel: $bestandsID ]
Van gegevensbestand lezen [ Bestands-ID: $bestandsID ; Grootte (bytes): 100 ; Doel: Hulpprogramma’s::Log-invoer ; Lezen als: UTF-8 ]
Gegevensbestand sluiten [ Bestands-ID: $bestandsID ]

Voorbeeld 3 

Als het bestand groot.log bestaat en groot is, leest het bestand 64 MB tegelijk in een variabele. Dit gaat door totdat het gehele bestand is gelezen. Als het bestand kleiner is, wordt het hele bestand in één leesbewerking gelezen. De gegevens worden in een variabele gelezen voor betere prestaties. Vervolgens worden de gegevens opgeslagen in een veld.

Kopiëren
Foutafvanging instellen [ Aan ]
Variabele instellen [ $k_BestandOntbreektFout ; Waarde: 100 ] 
Variabele instellen [ $k_EindVanBestandFout ; Waarde: 10 ]
Variabele instellen [ $k_64KB ; Waarde: 64 * 1024 ]
Variabele instellen [ $k_64MB ; Waarde: 64 * 1024 * 1024 ]
Variabele instellen [ $bestand ; Waarde: "groot.log" ]
Informatie over bestaan van bestand ophalen [ "$bestand" ; Doel : $bestaanBestand ]
If [ $bestaanBestand = 0 ]
    Script afsluiten [ Resultaat: $k_BestandOntbreektFout ]
End If

Gegevensbestand openen [ "$bestand" ; Doel: $bestandsID ] 

#Als het is gelukt om het bestand te openen, leest u de inhoud.
If [ Get (LaatsteFout) = 0 ]
    Bestandsgrootte ophalen [ "$bestand" ; Doel: $bestandsGrootte ]

    #Als het bestand groter is dan 64 KB, moet er per keer een hoeveelheid van 64 MB worden gelezen.
    If [ $bestandsGrootte > $k_64KB ]

        Loop
            #Lees tot 64 MB en sla dit op in een variabele.
            Van gegevensbestand lezen [ Bestands-ID: $bestandsID ; Grootte (bytes): $k_64MB ; Doel: $gegevensBlok ; Lezen als: UTF-8 ]
            Variabele instellen [ $leesFout; Waarde:Get (LaatsteFout) ]

            #Als de leesbewerking is geslaagd of als het einde van het bestand is bereikt, voegt u de gegevens die in deze herhaling zijn gelezen ($gegevensBlok) samen bet de gegevens die eerder zijn gelezen ($bestandsInhoud).
            If [ ($leesFout = 0) of ($leesFout = $k_EindVanBestandFout) ]
                Variabele instellen [ $bestandsInhoud ; Waarde: $bestandsInhoud & $gegevensBlok ]
            End If

            #Sluit de lus af als de leesbewerking is mislukt of als het einde van het bestand is bereikt.
            Exit Loop If [ $leesFout ]
        End Loop

    Else
        #Als het bestand niet groter is dan 64 KB, moet het in één keer worden gelezen.
        Van gegevensbestand lezen [ Bestands-ID: $bestandsID ; Doel: $bestandsInhoud ; Lezen als: UTF-8 ]
    End If

    #Sluit het gegevensbestand en sla de inhoud op in een veld.
    Gegevensbestand sluiten [ Bestands-ID: $bestandsID ]
    Veld instellen [ Tabel::Gegevens ; $bestandsInhoud ]

End If