OPEN
Stream = OPEN FileName [ FOR [ READ | INPUT ] [ WRITE | OUTPUT ] [ CREATE | APPEND ] [ WATCH ] ]
Abre um arquivo para leitura, escrita, criar, ou anexar dados. O arquivo deve existir, ou a palavra-chave
CREATE
deve ser usada.
-
Se a palavra-chave
CREATE
for especificada, o arquivo é criado, ou deletado, se ele já existir.
-
Se a palavra-chave
APPEND
for especificada, então o ponteiro é movido para o final do arquivo logo após o arquivo ser aberto.
-
Se a palavras-chave
READ
ou WRITE
são especificadas, então, a entrada e saída não são buffered.
-
Se a palavras-chave
INPUT
ou OUTPUT
são especificadas, então, a entrada e saída são buffered.
-
Se a palavra-chave
WATCH
for especificada, o arquivo é vigiado pelo interpretador através do select(2) sistema call :
-
Se pelo menos um byte pode ser lido a partir do arquivo, então, o manipulador de eventos
file_read()
é chamado.
-
Se pelo menos um byte pode ser escrito para o arquivo, então, o manipulador de eventos
file_write()
é chamado.
Se o arquivo for aberto com êxito, um objeto Stream é retornado à variável
Stream.
Por padrão, os streams são buffered.
Se você quer ter um fluxo sem buffer, você deve usar a palavra-chave
READ
ou
WRITE
explicitamente.
Ao contrário de outros dialetos básicos, Gambas nunca vai apagar o conteúdo de um arquivo
quando ele é aberto com a palavra-chave WRITE
.
Assim, se o novo conteúdo é menor do que o antigo,
algum lixo da versão do arquivo antigo permanecerá no final do novo arquivo.
Para evitar isso, abra o arquivo, incluindo a palavra-chave CREATE
.
Erros
Mensagem
|
Descrição
|
Acesso proibido (#43)
|
O acesso solicitado para o arquivo não é permitido,
ou permissão de busca é negada por um dos
diretórios no prefixo do caminho ou o
arquivo ainda não existe e o acesso ao diretório pai para escrever não é permitido.
|
Arquivo é um diretório (#46)
|
FileName refere-se a um diretório. Use a função Dir no lugar!
|
Arquivo ou diretório não existente (#45)
|
FileName não existe, ou um componente do diretório em pathname não existe ou é uma ligação simbólica.
|
Sem memória (#1)
|
O sistema ficou sem memória.
|
Dispositivo está cheio (#37)
|
FileName estava a ser criado, mas o dispositivo contendo FileName não tem espaço para o novo arquivo.
|
Não é um diretório (#49)
|
Um componente usado como um diretório em FileName não é, de fato, um diretório.
|
Erro de sistema... (#42)
|
Outros erros de sistema possíveis:
-
Muitas ligações simbólicas foram encontradas na resolução de FileName.
-
O processo já tem o número máximo de arquivos abertos.
-
O limite do sistema sobre o número total de arquivos abertos foi atingido.
-
FileName refere-se a um arquivo especial de dispositivo e não existe nenhum dispositivo correspondente.
-
O arquivo chamado é um pipe nomeado e nenhum processo tem o arquivo aberto para leitura.
-
FileName refere-se a um arquivo em um sistema de arquivos somente leitura e o acesso de escrita foi solicitado.
-
FileName refere-se a uma imagem executável que está sendo executada e acesso de gravação foi solicitado.
|
Exaemplos
' Imprime o conteúdo de um arquivo de texto para a tela
DIM hFile AS File
DIM sLine AS String
hFile = OPEN "/etc/passwd" FOR INPUT
WHILE NOT Eof(hFile)
LINE INPUT #hFile, sLine
PRINT sLine
WEND
' Assistindo uma porta serial
DIM hFile AS File
hFile = OPEN "/dev/ttyS0" FOR READ WRITE WATCH
...
PUBLIC SUB File_Read()
DIM iByte AS Byte
READ #hFile, iByte
PRINT "Got one byte: "; iByte
END
' Lendo dados de um arquivo BMP, conhecido por usar o formato little-endian:
DIM hFile AS File
DIM iData AS Integer
hFile = OPEN "image.bmp" FOR INPUT
hFile.ByteOrder = gb.LittleEndian
...
READ #hFile, iData
Veja também