Ler a partir do arquivo de dados
Lê dados de um arquivo de dados aberto.
Consulte também
Opções
- ID do arquivo é uma expressão numérica que especifica a ID do arquivo de um arquivo de dados aberto. Consulte Etapa de script Abrir arquivo de dados.
- Valor especifica o número de bytes a ser lido caso Ler como seja UTF-8 ou Bytes. Para UTF-16, Valor é o número de unidades do código Unicode a ser lido. Se Valor não for especificado (definido como nada), o arquivo todo será lido.
- Destino é o campo ou a variável para armazenar a leitura de dados do arquivo.
- Ler como especifica a codificação de caracteres do arquivo.
- UTF-16 é a codificação de caracteres Unicode (UTF-16 little endian) de 16 bits padrão do FileMaker.
- UTF-8 é a codificação de caracteres Unicode de 8 bits.
- Bytes pressupõe que não há codificação de caracteres específica, mas que é feita a leitura de um byte por vez. Se o destino for uma variável ou um campo de container, a leitura de dados de um arquivo será armazenada como dados de container com o mesmo nome de arquivo que o arquivo especificado.
Compatibilidade
Produto | Compatível |
FileMaker Pro | Sim |
FileMaker Go | Sim |
FileMaker WebDirect | Não |
FileMaker Server | Sim |
FileMaker Cloud | Sim |
FileMaker Data API | Não |
Publicação na Web personalizada | Sim |
Originada na versão
18.0
Descrição
A etapa de script lê dados especificados por Valor, começando na posição atual de leitura-gravação, ou lê o arquivo inteiro caso Valor não seja especificado. Consulte Definir posição do arquivo de dados.
O valor máximo de dados que esta etapa de script pode ler no momento é 64 MB. Se o arquivo for maior que 64 MB, você poderá realizar esta etapa de script muitas vezes, lendo um valor que não seja maior que 64 MB por vez.
Notas
- O desempenho é melhor ao ler não mais que 64 KB.
- Ao ler o texto Unicode de uma porção de um arquivo, somente uma parte de um caractere poderá ser lida caso o caractere consista em várias unidades de código. Se você quiser ler o texto de um arquivo UTF-8 ou UTF-16, pode ser mais seguro ler o arquivo todo de uma vez, a não ser que você tenha certeza do número de pontos de código por caractere.
Exemplo 1
Lê o conteúdo de um arquivo aberto com um ID de arquivo de 2 e armazena os dados em uma variável.
Ler a partir do arquivo de dados [ ID do arquivo: 2 ; Quantidade (bytes): ; Destino: $variable ; Ler como: Bytes ]
Exemplo 2
Verifica se um arquivo chamado change.log existe na pasta Documentos. Se existir, lê as primeiras 100 unidades de código UTF-8 no campo de texto Utilitários::Entrada de log.
Definir variável [ $file ; Valor: Get ( DocumentsPath ) & "change.log" ]
Obter arquivo existente [ "$file" ; Destino: $fileExists ]
If [ not $fileExists ]
Sair do script [ Resultado do texto: ]
End If
Abrir arquivo de dados [ "$file" ; Destino: $fileID ]
Ler a partir do arquivo de dados [ ID do arquivo: $fileID ; Quantidade (bytes): 100 ; Destino: Utilitários::Entrada de log ; Ler como: UTF-8 ]
Fechar arquivo de dados [ ID do arquivo: $fileID ]
Exemplo 3
Se o arquivo large.log existir e for grande, lê o arquivo 64 MB por vez em uma variável até que todo o arquivo seja lido. Se o arquivo for menor, lê todo o arquivo em uma operação de leitura. Os dados são lidos em uma variável para melhorar o desempenho e depois armazenados em um campo.
Definir captura de erro [ Ativado ]
Definir variável [ $k_FileMissingError ; Valor: 100 ]
Definir variável [ $k_EndOfFileError ; Valor: 10 ]
Definir variável [ $k_64KB ; Valor: 64 * 1024 ]
Definir variável [ $k_64MB ; Valor: 64 * 1024 * 1024 ]
Definir variável [ $file ; Valor: "large.log" ]
Obter arquivo existente [ "$file" ; Destino : $fileExists ]
If [ $fileExists = 0 ]
Sair do script [ Resultado: $k_FileMissingError ]
End If
Abrir arquivo de dados [ "$file" ; Destino: $fileID ]
#Se o arquivo tiver sido aberto corretamente, lê o conteúdo.
If [ Get ( LastError ) = 0 ]
Obter tamanho de arquivo [ "$file" ; Destino: $fileSize ]
#If Se o tamanho do arquivo for maior que 64 KB, lê 64 MB por vez.
If [ $fileSize > $k_64KB ]
Loop [ Liberar: Sempre ]
#Lê até 64 MB e armazena-os em uma variável.
Ler a partir do arquivo de dados [ ID do arquivo: $fileID ; Quantidade (bytes): $k_64MB ; Destino: $dataChunk ; Ler como: UTF-8 ]
Definir variável [ $readError; Valor:Get ( LastError ) ]
#Se a operação de leitura tiver sido bem-sucedida ou se o final do arquivo tiver sido atingido, concatene a leitura de dados nessa passagem ($dataChunk) com a leitura de dados anterior ($fileContents).
If [ ( $readError = 0 ) or ( $readError = $k_EndOfFileError ) ]
Definir variável [ $fileContents ; Valor: $fileContents & $dataChunk ]
End If
#Sai do loop se a operação de leitura falhar ou se o final do arquivo tiver sido atingido.
Exit Loop If [ $readError ]
End Loop
Else
#Se o arquivo não for maior que 64 KB, lê todo ele de uma vez.
Ler a partir do arquivo de dados [ ID do arquivo: $fileID ; Destino: $fileContents ; Ler como: UTF-8 ]
End If
#Fecha o arquivo de dados e armazena o conteúdo em um campo.
Fechar arquivo de dados [ ID do arquivo: $fileID ]
Definir campo [ Tabela::Dados ; $fileContents ]
End If