# File Reader

O **File Reader** lê um arquivo local e o converte para uma estrutura JSON que pode ser manipulada dentro do *pipeline*. O componente suporta a leitura de arquivos textos multi-linha ou arquivos binários.&#x20;

## Parâmetros

Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por [expressões *Double Braces*](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>File Name</strong> <code>(DB)</code></td><td>Nome do arquivo ou <em>full file path</em> (ex: tmp/processed/file.txt) do arquivo local.</td><td>data.csv</td><td><em>String</em></td></tr><tr><td><strong>Charset</strong></td><td>Nome do código de caracteres para a leitura do arquivo.</td><td>UTF-8</td><td><em>String</em></td></tr><tr><td><strong>Check File Size</strong></td><td>Se a opção estiver ativada, o <strong>Maximum File Size</strong> especificado será verificado.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Binary File</strong></td><td>Se a opção estiver ativada, o arquivo é considerado binário e a leitura consiste em uma <em>string</em> com a representação BASE64 do conteúdo do arquivo; do contrário, o arquivo é lido como texto.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Maximum File Size</strong></td><td>Especifica o tamanho máximo permitido (em <em>bytes</em>); caso o tamanho do arquivo seja superior ao valor informado, então um erro de leitura será lançado.</td><td>1048576</td><td><em>Long</em></td></tr><tr><td><strong>Read As A Single String</strong></td><td>Se a opção estiver ativada, o arquivo texto será lido como uma única <em>string</em>; do contrário, o arquivo texto será lido como um <em>array</em> de <em>strings</em> em que cada item representa uma linha do arquivo.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Fail On Error</strong></td><td>Se a opção estiver ativada, a execução do <em>pipeline</em> com erro será interrompida; do contrário, a execução do <em>pipeline</em> continua, mas o resultado vai mostrar um valor falso para a propriedade "success".</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

## Como é feita a leitura de arquivos de texto? <a href="#como--feita-a-leitura-de-arquivos-texto" id="como--feita-a-leitura-de-arquivos-texto"></a>

Os arquivos de texto são lidos linha a linha. Uma estrutura é retornada na saída do componente, com todas as linhas que foram lidas:

```
{

"data" : [

 "linha 1",

 "linha 2",

  ...

],

"fileName": "",

"lineCount": 0

}
```

* **data:** contém um vetor JSON de linhas convertidas.
* **filename:** nome do arquivo utilizado como fonte para o componente.
* **lineCount:** quantidade de linhas lidas do arquivo.

Caso o parâmetro **Read As A Single String** esteja ativado, então a estrutura retornada vai conter todas as linhas do arquivo lidas em um único *string*:

```
{

"data" : [

 "linha 1\r\nlinha2\r\nlinha n\r\n"

],

"fileName": "",

"lineCount": 1

}
```

&#x20;    \
Note que, nesse caso, a leitura das linhas inclui um ou mais caracteres de quebra de linha. Geralmente, se o arquivo for criado em sistemas baseados em Unix, somente a quebra de linha com `\n` será retornada. Por outro lado, se o arquivo for criado em sistemas baseados em Windows, será retornada a quebra de linha com  `\r\n`.

## Lidando com conjunto de caracteres (Charset) <a href="#lidando-com-conjunto-de-caracteres-charset" id="lidando-com-conjunto-de-caracteres-charset"></a>

Para a leitura de arquivos de texto, é importante definir o conjunto de caracteres com o mesmo valor utilizado durante a criação do arquivo. Caso um conjunto de caracteres incompatível seja utilizado, o arquivo texto poderá ser lido e interpretado de maneira incorreta. Isso leva a imprecisões em caracteres especiais, assim como letras com acentos e outros.   &#x20;

## Como é feita a leitura de arquivos binários? <a href="#como--feita-a-leitura-de-arquivos-binrios" id="como--feita-a-leitura-de-arquivos-binrios"></a>

Arquivos binários não podem ter seu conteúdo expresso de forma natural em propriedades dentro de mensagens JSON, pois muitos dos caracteres binários não são "imprimíveis". Dessa forma, o conteúdo de arquivos binários é transformado em um *string* base64:

```
{

"data" : "VGhpcyBpcyBhIHRlc3QuCg==",

"fileName": "",

"lineCount": 0

}
```

Note que, no caso acima, a propriedade "data" não é apresentada como um *array* de linhas, mas sim como um único *string* em base64.      &#x20;

{% hint style="info" %}
A manipulação de arquivos dentro de um *pipeline* é feita de forma protegida. Todos os arquivos são acessados apenas em um diretório temporário, que é criado a cada execução do *pipeline*.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/files/file-reader.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
