Leggi da file dati

Legge i dati da un file dati aperto.

Opzioni 

  • ID file è un'espressione numerica che specifica l'ID file di un file dati aperto. Vedere istruzione di script Apri file dati.
  • Quantità specifica il numero di byte da leggere se Leggi come è UTF-8 o Byte. Per UTF-16, Quantità è il numero di unità di codice Unicode da leggere. Se Quantità non è specificato (nessun valore impostato), viene letto l'intero file.
  • Destinazione è il campo o la variabile in cui memorizzare i dati letti dal file.
  • Leggi come specifica la codifica caratteri del file.
    • UTF-16 è la codifica caratteri Unicode a 16 bit (UTF-16 little endian) predefinita di FileMaker.
    • UTF-8 è la codifica caratteri Unicode a 8 bit.
    • Byte non presuppone nessuna codifica caratteri specifica, ma legge un byte per volta. Se la destinazione è una variabile o un campo Contenitore, i dati letti dal file vengono memorizzati come dati Contenitore con lo stesso nome del file specificato.

Compatibilità 

Prodotto Supportata
FileMaker Pro
FileMaker Go
FileMaker WebDirect No
FileMaker Server
FileMaker Cloud
FileMaker Data API No
Pubblicazione Web personalizzata

Creata nella versione 

18.0

Descrizione 

Questa istruzione di script legge i dati specificati da Quantità partendo dalla posizione di lettura-scrittura corrente o, se Quantità non è specificato, legge l'intero file. Vedere Imposta posizione file dati.

La quantità massima di dati che questa istruzione di script può leggere per volta è 64 MB. Se un file supera i 64 MB, è possibile eseguire questa istruzione di script più volte, leggendo ogni volta una quantità non superiore a 64 MB.

Note 

  • La lettura di una quantità non superiore ai 64 KB garantisce prestazioni ottimali.
  • Durante la lettura di un testo Unicode da una porzione di un file, è possibile venga letta solo parte di un carattere se questo è composto da più unità di codice. Se si prevede di leggere il testo da un file UTF-8 o UTF-16, potrebbe essere più sicuro leggere l'intero file in una volta sola, a meno che non si sia certi del numero di punti di codice per carattere.

Esempio 1 

Legge i contenuti di un file aperto con ID 2 e memorizza i dati in una variabile.

Copia
Leggi da file dati [ ID file: 2 ; Quantità (byte): ; Destinazione: $variabile ; Leggi come: Byte ]

Esempio 2 

Controlla se esiste un file modifica.log nella cartella Documenti. Se esiste, legge le prime 100 unità di codice UTF-8 nel campo Testo Utilità::Voce di registro.

Copia
Imposta variabile [ $file; Valore: Get ( PercorsoDocumenti ) & "modifica.log" ]
Ottieni esistenza file [ "$file"; Destinazione: $fileEsiste ]
If [ not $fileEsiste ]
    Esci dallo script [ Risultato testo: ]
End If
Apri file dati [ "$file" ; Destinazione: $IDfile ]
Leggi da file dati [ ID file: $IDfile ; Quantità (byte): 100 ; Destinazione: Utilità::Voce di registro ; Leggi come: UTF-8]
Chiudi file dati [ ID file: $IDfile ]

Esempio 3 

Se il file grande.log esiste ed è grande, ne legge 64 MB per volta in una variabile finché non viene letto l'intero file. Se il file è più piccolo, legge l'intero file in un'operazione di lettura. I dati vengono letti in una variabile per prestazioni migliori, quindi memorizzati in un campo.

Copia
Imposta cattura errori [ Attivata ]
Imposta variabile [ $k_ErroreFileMancante ; Valore: 100 ] 
Imposta variabile [ $k_ErroreFineFile ; Valore: 10 ]
Imposta variabile [ $k_64KB ; Valore: 64 * 1024 ]
Imposta variabile [ $k_64MB ; Valore: 64 * 1024 * 1024 ]
Imposta variabile [ $file ; Valore: "grande.log" ]
Ottieni esistenza file [ "$file" ; Destinazione : $fileEsiste ]
If [ $fileEsiste = 0 ]
    Esci dallo script [ Risultato testo: $k_ErroreFileMancante ]
End If

Apri file dati [ "$file" ; Destinazione: $IDfile ] 

#Se il file si è aperto correttamente, leggere i contenuti.
If [ Get ( UltimoErrore ) = 0 ]
    Ottieni dimensioni file [ "$file" ; Destinazione: $dimensioniFile ]

    #Se le dimensioni del file superano i 64 KB, leggere 64 MB per volta.
    If [ $dimensioniFile > $k_64KB ]

        Loop [ Scarica: Sempre ]
            #Leggere fino a 64 MB e memorizzarli in una variabile.
            Leggi da file dati [ ID file: $IDfile ; Quantità (byte): $k_64MB ; Destinazione: $bloccoDati ; Leggi come: UTF-8]
            Imposta variabile [ $erroreLettura; Valore: Get ( UltimoErrore ) ]

            #Se l'operazione di lettura è stata eseguita correttamente o se è stata raggiunta la fine del file, concatenare i dati letti in questo passaggio ($bloccoDati) con i dati letti in precedenza ($contenutiFile).
            If [ (  $erroreLettura = 0 ) or ( $erroreLettura = $k_ErroreFineFile ) ]
                Imposta variabile [ $contenutiFile; Valore: $contenutiFile & $bloccoDati ]
            End If

            #Se l'operazione di lettura non è riuscita o se è stata raggiunta la fine del file, uscire dal loop.
            Exit Loop If [ $erroreLettura ]
        End Loop

    Else
        #Se il file non supera i 64 KB, leggerlo tutto in una volta.
        Leggi da file dati [ ID file: $IDfile ; Destinazione: $contenutiFile ; Leggi come: UTF-8 ]
    End If

    #Chiudere il file dati e memorizzare i contenuti in un campo.
    Chiudi file dati [ ID file: $IDfile ]
    Imposta campo [ Tabella::Dati; $contenutiFile ]

End If