FileOpen

Abre o arquivo especificado para leitura ou gravação e atribui um número de arquivo inteiro (integer) exclusivo. Você pode usar esse número inteiro para identificar o arquivo quando você ler, escreve ou fecha o arquivo. Os argumentos opcionais filemode, fileaccess, filelock e writemode determinam o modo no qual o arquivo é aberto.

Sintaxe:

FileOpen(filename {, filemode {, fileaccess {, filelock {, writemode {, encoding }}}}} )

 

Retorno:

  • Interger positivo diferente de zero se o arquivo for aberto com sucesso;
  • -1 se um erro ocorrer;
  • Null se o arquivo informado no argumento filename for nulo.

 

Destalhes sobre a função!

Appeon: Função suportada. No PowerBuilder, o caminho relativo aponta para o diretório da aplicação, mas no Appeon o caminho relativo aponta para o diretório do Desktop do Usuário.

  1. Caso o PowerBuilder não encontre o arquivo especificado no argumento FileName, se o argumento FileAccess estiver marcado como Write! , ele vai criar um novo com o nome especificado (com o encoding ANSI!, se não houver outro especificado no comando), se o FileAccess estiver como Read! o PowerBuilder vai retornar -1.
  2. Nem todos os modos de manipulação do arquivo (argumento FileMode) vão suportar Strings E Blobs.
    • FileModes que suportam STRINGS: LineMode! e TextMode!
    • FileModes que suportam BLOBS: StreamMode!
  3. Se você tentar abrir um arquivo especificando um encoding diferente do que foi utilizado no momento da criação dele, a função FileOpen retornará -1.
  4. Se um arquivo binário (utilizando o FileMode StreamMode!), o parâmetro Encoding, se fornecido, será ignorado.

 

Como utilizar:

Exemplo 01:

//Abrindo um arquivo com as opções padrão.
long ll_fileNum

ll_fileNum = FileOpen("lista.txt")

Exemplo 02:

//Abrindo um arquivo definindo as configurações...
long ll_fileNum

ll_fileNum = FileOpen("c:\Temp\Lista.txt", StreamMode!, Write!, LockWrite!, Replace!)

Exemplo 03:

//Criando um arquivo definindo todas as opções, incluindo o Endoding.
long ll_ret
string ls_file
ls_file = "D:\temp\new.txt"

ll_ret = FileOpen(ls_file, TextMode!, Write!, LockReadWrite!, Replace!, EncodingUTF8!)

 

Argumentos:

Argumento Obrigatório Descrição
FileName Sim Nome do arquivo que você quer abrir. Se o caminho para o arquivo não for informado, o PowerBuilder assumirá o caminho relativo.
FileMode Não O valor deste argumento é do tipo enumerated e especifica como é marcado o final da leitura ou escrita de um arquivo. As opções são:

LineMode! - Leitura (Padrão) ou gravar o arquivo de uma linha de cada vez.
StreamMode! - Leia os blocos de dados binários.
TextMode! - Leia os blocos de texto.
FileAccess Não O valor deste argumento é do tipo enumerated e especifica se o arquivo é aberto para leitura ou gravação. Os valores são:

Read! - (Padrão) Acesso somente leitura.
Write! – Acesso somente para gravação
Se o PowerBuilder não localizar o arquivo, um novo arquivo é criado se o argumento fileaccess é definido para "Write!"
FileLock Não O valor deste argumento é do tipo enumerated, especificando se outros tem acesso ao arquivo aberto. Os valores são:

LockReadWrite! – (Padrão) somente o usuário que abriu o arquivo tem acesso
LockRead! - Somente o usuário que abriu o ficheiro pode lê-lo, mas todo mundo tem acesso de gravação
LockWrite! - Somente o usuário que abriu o arquivo pode gravar nele, mas todo mundo tem acesso de leitura
Shared! – Todos os usuários têm a leitura e gravação acesso.
WriteMode Não O valor deste argumento é do tipo enumerated. Quando o argumento fileaccess é Write!, especifica se os dados existentes no arquivo são sobrescritos. Os valores são:

Append! – (Padrão) gravar dados para o final do arquivo
Replate! - Substituir todos os dados existentes no arquivo.
WriteMode é ignorado se o argumento fileaccess é ler!
Encoding Não Codificação de caracteres do arquivo que você deseja criar. Utilize esse argumento quando você criar um novo arquivo de texto usando o TextMode! ou LineMode!. Se você não especificar uma codificação, o arquivo é criado com codificação ANSI. Os valores são:

EncodingANSI! (Padrão)
EncodingUTF8!
EncodingUTF16LE!
EncodingUTF16BE!

 

Referência:

 

Dúvidas sobre  o artigo? Sugestões? Precisa de ajuda com outra funcionalidade do PowerBuilder? Deixe um comentário.

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, PowerBuilder and tagged , , , .