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.
- 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.
- 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!
- 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.
- 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.