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 [ 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