Funções de arquivo no Jitterbit Design Studio
As funções de arquivo permitem que scripts manipulem arquivos em agentes, disponíveis através de fontes, e escritos em destinos.
Nota
Caracteres especiais usados para codificação percentual (também conhecida como codificação de URL) em nomes de arquivos são suportados para transferências FTP e SFTP no Design Studio.
ArchiveFile
Declaração
void ArchiveFile(string sourceId, string targetId[, bool deleteSource])
Sintaxe
ArchiveFile(<sourceId>, <targetId>[, <deleteSource>])
Parâmetros obrigatórios
sourceId
: Fonte do tipo arquivo no projeto atualtargetId
: Destino do tipo arquivo no projeto atual
Parâmetros opcionais
deleteSource
: Flag booleana (padrãofalse
) indicando se a fonte deve ser deletada após a gravação bem-sucedida no destino
Descrição
Lê um arquivo de uma fonte do tipo arquivo e o grava em um destino do tipo arquivo. Esta função combina as funções ReadFile
e WriteFile
, executa automaticamente FlushFile
e fornece uma opção para deletar o arquivo fonte.
A fonte do tipo arquivo e o destino do tipo arquivo usados nesta chamada de função devem ser definidos como uma fonte e um destino, respectivamente, no projeto atual. Veja as instruções sobre inserindo itens do projeto.
Como apenas um arquivo é arquivado, é recomendável que a fonte seja criada para retornar apenas um único arquivo. Se múltiplos arquivos forem retornados, apenas o primeiro será utilizado.
Assim como a função WriteFile
, esta função não sobrescreverá um arquivo existente no destino.
Se a função ArchiveFile
falhar, a operação não falhará. Um script será abortado, um aviso será adicionado ao log da operação e a operação continuará.
Arquivamento versus cópia
- Se
deleteSource
fortrue
, o arquivo é arquivado (em outras palavras, movido) da origem para o destino e removido da origem. - Se
deleteSource
forfalse
, o arquivo é copiado da origem para o destino e permanece na origem.
Nota
Os endpoints criados usando o valor do host subjacente do endpoint do tipo de arquivo estão incluídos na reportagem de uso de endpoints e contam para sua licença.
Exemplos
// Retrieve list of files from a source
localFiles = FileList("<TAG>Sources/Local File Source</TAG>");
// Create a global archive filename
$archiveFilename = "archive.[date]-[time]." + localFiles[0];
// Archive (moves) a file, using [archiveFilename] in the target filename(s) field
ArchiveFile("<TAG>Sources/Local File Source</TAG>",
"<TAG>Targets/FTP Target</TAG>", true);
// Copies a file, using [archiveFilename] in the target filename(s) field
ArchiveFile("<TAG>Sources/Local File Source</TAG>",
"<TAG>Targets/FTP Target</TAG>", false);
DeleteFile
Declaração
int DeleteFile(string sourceId[, string fileFilter])
Sintaxe
DeleteFile(<sourceId>[, <fileFilter>])
Parâmetros obrigatórios
sourceId
: Fonte do tipo arquivo no projeto atual
Parâmetros opcionais
fileFilter
: Filtro de arquivo ou Nome do arquivo para substituir a definição da fonte
Descrição
Exclui um arquivo da fonte especificada.
A fonte do tipo arquivo usada nesta chamada de função deve ser definida como uma fonte no projeto atual. Veja as instruções sobre inserindo itens do projeto.
Se o filtro da fonte selecionar mais de um arquivo, um erro será gerado. Para excluir vários arquivos, use a função DeleteFiles
em vez disso.
O método retorna um inteiro que pode ser 0 ou 1: retorna 1 se o arquivo foi excluído; 0 se o arquivo não puder ser encontrado.
O segundo parâmetro, fileFilter
, é opcional e pode ser usado para substituir o filtro de arquivo usado na definição da fonte. Um nome de arquivo pode ser usado. Alternativamente, uma variável global pode ser usada para substituir o filtro de arquivo na definição da fonte. Variáveis globais são referenciadas como [de_name]
na definição da fonte.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo de arquivo estão incluídos na reportagem de uso de endpoints e contam para sua licença.
Examples
// Delete the file "ExampleFile.txt" from the "File Share Source"
DeleteFile("<TAG>Sources/File Share Source</TAG>", "ExampleFile.txt");
DeleteFiles
Declaration
int DeleteFiles(string sourceId[, string fileFilter])
Syntax
DeleteFiles(<sourceId>[, <fileFilter>])
Required parameters
sourceId
: Fonte do tipo arquivo no projeto atual
Optional parameters
fileFilter
: Filtro de arquivo ou nome de arquivo para substituir a definição da fonte
Description
Exclui um ou mais arquivos da fonte especificada.
A fonte do tipo arquivo usada nesta chamada de função deve ser definida como uma fonte no projeto atual. Veja as instruções sobre inserir itens do projeto.
Este método excluirá vários arquivos, se houver, com base no filtro de arquivo da definição da fonte. Um inteiro é retornado especificando quantos arquivos foram excluídos. Retornar 0 significa que nenhum arquivo foi encontrado correspondendo ao filtro de arquivo.
Se um caminho especificado na fonte não puder ser encontrado, um erro será gerado. Se isso for uma possibilidade, a função deve ser envolvida em uma função Eval
.
Para excluir um único arquivo, use a função DeleteFile
em vez disso.
O segundo parâmetro, fileFilter
, é opcional e pode ser usado para substituir o filtro de arquivo usado na definição da fonte. Um nome de arquivo pode ser usado. Alternativamente, uma variável global pode ser usada para substituir o filtro de arquivo na definição da fonte. Variáveis globais são referenciadas como [de_name]
na definição da fonte.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo de arquivo estão incluídos no relatório de uso de endpoints e contam para sua licença.
Exemplos
// Delete all text (".txt") files in the source "File Source"
DeleteFiles("<TAG>Sources/File Source</TAG>","*.txt");
DirList
Declaração
array DirList(string sourceId[, string path, string fileFilter])
Sintaxe
DirList(<sourceId>[, <path>, <fileFilter>])
Parâmetros obrigatórios
sourceId
: Fonte do tipo de arquivo no projeto atual
Parâmetros opcionais
path
: Caminho do arquivo para substituir a definição da fontefileFilter
: Filtro de arquivo ou nome de arquivo para substituir a definição da fonte
Descrição
Retorna uma lista de diretórios contidos em uma fonte, especificando opcionalmente um caminho e um filtro para restringir os resultados.
Este método retorna um array contendo os nomes dos diretórios.
A fonte do tipo de arquivo usada nesta chamada de função deve ser definida como uma fonte no projeto atual. Consulte as instruções sobre inserindo itens do projeto.
O parâmetro fileFilter
é opcional e pode ser usado para substituir o filtro de arquivo usado na definição da fonte. Um nome de arquivo pode ser usado. Alternativamente, uma variável global pode ser usada para substituir o filtro de arquivo na definição da fonte. Variáveis globais são referenciadas como [de_name]
na definição da fonte.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo de arquivo estão incluídos no relatório de uso de endpoints e contam para sua licença.
Exemplos
// Returns the count of the list of all the text files (".txt")
// in the "example" folder of the source "File Share Source"
Length(DirList("<TAG>Sources/File Share Source</TAG>",
"\\\\server\\example","*.txt"));
FileList
Declaração
array FileList(string sourceId[, string path, string fileFilter])
Sintaxe
FileList(<sourceId>[, <path>, <fileFilter>])
Parâmetros obrigatórios
sourceId
: Fonte do tipo arquivo no projeto atual
Parâmetros opcionais
path
: Caminho do arquivo para substituir a definição da fontefileFilter
: Filtro de arquivo ou nome de arquivo para substituir a definição da fonte
Descrição
Retorna uma lista de nomes de arquivos contidos em uma fonte. Esta será a mesma lista de arquivos recebida quando a conexão de uma fonte do tipo arquivo é testada, a menos que um filtro de arquivo seja especificado para substituir o filtro definido na configuração da atividade.
A fonte do tipo arquivo usada nesta chamada de função deve ser definida como uma fonte no projeto atual. Veja as instruções sobre inserindo itens do projeto.
O parâmetro path
é opcional e pode ser usado para substituir o caminho utilizado na definição da fonte.
O parâmetro fileFilter
é opcional e pode ser usado para substituir o filtro de arquivo utilizado na definição da fonte. Um nome de arquivo pode ser utilizado. Alternativamente, uma variável global pode ser usada para substituir o filtro de arquivo na definição da fonte. Variáveis globais são referenciadas como [de_name]
na definição da fonte.
O método retorna um array contendo os nomes de arquivos que correspondem ao filtro de arquivo da fonte ou à fonte substituída.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo arquivo estão incluídos na reportagem de uso de endpoints e contam para sua licença.
Exemplos
// Retorna a contagem da lista de
// todos os arquivos na fonte "Fonte de Compartilhamento de Arquivos"
Length(FileList("<TAG>Sources/File Share Source</TAG>"));
FlushAllFiles
Declaração
void FlushAllFiles([string targetId])
Sintaxe
FlushAllFiles([<targetId>])
Parâmetros opcionais
targetId
: Alvo do tipo arquivo no projeto atual
Descrição
Persiste os dados escritos em um buffer de arquivo com WriteFile()
.
O alvo do tipo arquivo usado nesta chamada de função deve ser definido como um alvo no projeto atual. Veja as instruções sobre inserir itens de projeto.
Se FlushAllFiles
for chamado com um targetId
como argumento, todos os arquivos escritos usando esse alvo serão liberados (veja a função FlushFile
). Se FlushAllFiles
for chamado sem um argumento, todos os arquivos escritos usando WriteFile
para quaisquer alvos serão persistidos em seus respectivos alvos.
Veja também a função FlushFiles
.
Aviso
Se um arquivo especificado para escrita já existir, um erro será gerado quando FlushFile
ou FlushAllFiles
for chamado. Use DeleteFile
ou DeleteFiles
para remover arquivos existentes antes de liberar.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo arquivo estão incluídos na reportagem de uso de endpoints e contam para sua licença.
Exemplos
// Write "contents1" to the file specified by the FTP target
WriteFile("<TAG>Targets/FTP Target</TAG>", contents1);
// Write "contents2" to a file "copy.txt",
// overriding that specified by the FTP target
WriteFile("<TAG>Targets/FTP Target</TAG>", contents2, "copy.txt");
// Flush both files to the target
FlushAllFiles("<TAG>Targets/FTP Target</TAG>");
FlushFile
Declaração
void FlushFile(string targetId[, string filename])
Sintaxe
FlushFile(<targetId>[, <filename>])
Parâmetros obrigatórios
targetId
: Alvo do tipo arquivo no projeto atual
Parâmetros opcionais
filename
: Nome do arquivo para substituir a definição do destino
Descrição
Persiste os dados gravados em um buffer de arquivo com WriteFile
. Quando FlushFile
é chamado, o conteúdo atual do buffer é escrito no destino e o buffer local é descartado.
O destino do tipo arquivo usado nesta chamada de função deve ser definido como um destino no projeto atual. Veja as instruções sobre inserir itens de projeto.
O parâmetro opcional, filename
, pode ser usado para substituir o nome do arquivo utilizado na definição do destino se ele foi igualmente substituído na chamada da função WriteFile
. Descartar um arquivo que nunca foi escrito não tem efeito.
Alternativamente, uma variável global pode ser usada para substituir o nome do arquivo na definição do destino. Variáveis globais são referenciadas como [de_name]
na definição do destino. Se um nome de arquivo substituto for usado, cada buffer é descartado separadamente para cada nome único.
Veja também a função FlushAllFiles
.
Aviso
Se um arquivo especificado para gravação já existir, um erro será gerado quando FlushFile
ou FlushAllFiles
for chamado. Use DeleteFile
ou DeleteFiles
para remover arquivos existentes antes de descartar.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo arquivo estão incluídos na reportagem de uso de endpoints e contam para sua licença.
Exemplos
// Writing the variable "contents" to a target
WriteFile("<TAG>Targets/FTP Target</TAG>", contents);
// Flushing (actually writing) to the target
FlushFile("<TAG>Targets/FTP Target</TAG>");
// Write another file (overriding the filename in the target)
WriteFile("<TAG>Targets/FTP Target</TAG>", contents, "test.txt");
// Flushing the "test.txt" file explicitly
FlushFile("<TAG>Targets/FTP Target</TAG>", "test.txt");
ReadFile
Declaração
string ReadFile(string sourceId[, string fileFilter])
Sintaxe
ReadFile(<sourceId>[, <fileFilter>])
Parâmetros obrigatórios
sourceId
: Fonte do tipo arquivo no projeto atual
Parâmetros opcionais
fileFilter
: Filtro de arquivo ou nome de arquivo para substituir a definição de origem
Descrição
Lê o conteúdo de um arquivo de uma origem.
A origem do tipo de arquivo usada nesta chamada de função deve ser definida como uma origem no projeto atual. Veja as instruções sobre inserir itens de projeto.
O método retorna o conteúdo do arquivo apontado pela origem. Se o filtro da origem selecionar mais de um arquivo, o primeiro será utilizado. Recomenda-se especificar uma origem que identifique de forma única um único arquivo.
O parâmetro fileFilter
é opcional e pode ser usado para substituir o filtro de arquivo utilizado na definição da origem. Um nome de arquivo pode ser usado. Alternativamente, uma variável global pode ser utilizada para substituir o filtro de arquivo na definição da origem. Variáveis globais são referenciadas como [de_name]
na definição da origem.
A partir da versão Harmony 8.20, se a função ReadFile()
falhar, a operação não falha. Um script será abortado, um aviso será adicionado ao log da operação e a operação continuará.
Este método pode ser usado para ler dados de uma origem HTTP. Nesse caso, todas as variáveis Jitterbit $jitterbit.source.http.*
serão preenchidas.
Aviso
Esta função não funciona de forma confiável com arquivos que têm conteúdo binário, pois geralmente lê apenas uma parte do arquivo. Se o arquivo tiver conteúdo binário, use a função Base64encodefile para ler todo o conteúdo do arquivo.
Nota
Endpoints criados usando o valor do host subjacente do endpoint do tipo de arquivo estão incluídos na reportagem de uso de endpoints e contam para sua licença.
Exemplos
$fileContents = ReadFile("<TAG>Sources/File Share Source</TAG>")
WriteFile
Declaração
void WriteFile(string targetId, type fileContents[, string filename])
Sintaxe
WriteFile(<targetId>, <fileContents>[, <filename>])
Parâmetros obrigatórios
targetId
: Alvo do tipo arquivo no projeto atual
Parâmetros opcionais
fileContents
: Dados a serem escritos no arquivofilename
: Nome do arquivo para substituir a definição do alvo
Descrição
Escreve os fileContents
no alvo do tipo arquivo especificado por targetId
. Se fileContents
for do tipo binário, os dados binários são escritos no arquivo. Em todos os outros casos, uma representação em string dos dados é escrita.
O alvo do tipo arquivo usado nesta chamada de função deve ser definido como um alvo no projeto atual. Veja as instruções sobre inserir itens do projeto.
O terceiro parâmetro, filename
, é opcional e pode ser usado para substituir o nome do arquivo usado no alvo. Alternativamente, uma variável global pode ser usada para substituir o nome do arquivo na definição do alvo. Variáveis globais são referenciadas como [de_name]
na definição do alvo.
Este método também pode ser usado para escrever/postar dados em um alvo HTTP. Nesse caso, as variáveis $jitterbit.target.http.*
serão preenchidas.
A partir da versão 8.20 do Harmony, se a função WriteFile()
falhar, a operação não falha. Um script será abortado, um aviso será adicionado ao log da operação e a operação continuará.
Bufferização e descarregamento
Os conteúdos do arquivo são armazenados em buffer localmente até que FlushFile
ou FlushAllFiles
seja chamado no alvo ou a transformação seja concluída com sucesso. Chamar WriteFile
várias vezes sem chamar FlushFile
irá adicionar dados ao buffer atual e tudo será escrito no alvo do tipo arquivo real apenas quando for descarregado. Um buffer de arquivo é identificado de forma única pelo alvo (e potencialmente pelo filename
); por exemplo, o mesmo alvo pode ser usado para escrever em arquivos diferentes no mesmo diretório especificando um nome de arquivo e cada buffer de arquivo será separado.
Os arquivos não são realmente gravados no destino em uma transformação de teste, a menos que FlushFile
ou FlushAllFiles
sejam chamados. Se uma transformação for executada em uma operação ou como parte de uma operação de teste, o arquivo será gravado quando a transformação for concluída com sucesso ou quando FlushFile
ou FlushAllFiles
forem chamados no script.
Veja também as funções FlushAllFiles
e FlushFiles
.
Aviso
Se um arquivo especificado para gravação já existir, um erro será gerado quando FlushFile
ou FlushAllFiles
forem chamados. Use DeleteFile
ou DeleteFiles
para remover arquivos existentes antes de fazer o flush.
Nota
Os endpoints criados usando o valor do host subjacente do endpoint do tipo arquivo estão incluídos no relatório de uso de endpoints e contam para sua licença.
Examples
// Write "contents" to a file in a target
WriteFile("<TAG>Targets/FTP Target</TAG>", contents);
// Use the filename "test.txt" instead of
// what is defined in the target
WriteFile("<TAG>Targets/FTP Target</TAG>", contents, "test.txt");