FileOpen

FileOpen

Overview

Neste post, mergulhamos no mundo da programação com PowerBuilder, explorando a funcionalidade essencial da função FileOpen. Ideal para iniciantes e profissionais, o artigo oferece um guia detalhado sobre como abrir arquivos de forma eficiente, manipulando modos de acesso e escrita com exemplos claros. Seja criando arquivos novos ou acessando existentes, este guia é o seu ponto de partida perfeito.

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:

ArgumentoObrigatórioDescrição
FileNameSimNome do arquivo que você quer abrir. Se o caminho para o arquivo não for informado, o PowerBuilder assumirá o caminho relativo.
FileModeNãoO 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.
FileAccessNãoO 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!”
FileLockNãoO 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.
WriteModeNãoO 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!
EncodingNãoCodificaçã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.