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 | Sì | 
| FileMaker Go | Sì | 
| FileMaker WebDirect | No | 
| FileMaker Server | Sì | 
| FileMaker Cloud | Sì | 
| FileMaker Data API | No | 
| Pubblicazione Web personalizzata | Sì | 
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.
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.
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.
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
            #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