Referência > Referências de etapas de script > Etapas de script de arquivos > Ler a partir do arquivo de dados
 

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 o 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 é uma codificação de caracteres Unicode (UTF-16 little endian) de 16 bits padrão do FileMaker.

UTF-8 é uma codificação de caracteres Unicode de 8 bits.

Bytes não presume qualquer codificação de caracteres específica, mas lê 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 

Suportado 

FileMaker Pro Advanced 

Sim 

FileMaker Go 

Sim 

FileMaker WebDirect 

Não 

FileMaker Server 

Sim 

Produto FileMaker Cloud 

Sim 

FileMaker Data API 

Não 

Publicação na Web personalizada 

Sim 

Solução runtime 

Não 

Originado em 

FileMaker Pro 18.0 Advanced

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 ; Valor (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 do texto: $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 ]

#Se o tamanho do arquivo for maior que 64 KB, lê 64 MB por vez.
If [ $fileSize > $k_64KB ]

Loop
#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

Tópicos relacionados 

Etapa de script Abrir arquivo de dados

Etapa de script Obter arquivo existente

Etapa de script Obter tamanho de arquivo

Referência de etapas de script (lista em ordem alfabética)

Referência de etapas de script (lista de categoria)