FileHandle
A classe FileHandle
tem funções que lhe permitem ler sequencialmente ou anexar conteúdos a um objeto aberto File
. O manuseamento de um arquivo pode acessar a qualquer parte de um documento.
Os objectos de manipulação de arquivos são criados com a função file.open()
.
Para ler ou escrever um documento inteiro de uma só vez, pode considerar a utilização das funções file.getText() e file.setText() .
Graças ao objecto padrão 4D refcounting, um handle de arquivo é automaticamente apagado quando deixa de ser referenciado e, por conseguinte, o objeto solicitado arquivo
é automaticamente fechado. Consequentemente, com os handles dos arquivos não precisa de se preocupar com o encerramento de documentos.
Os recursos de um objeto, como documentos, são liberados quando não existem mais referências na memória, que acontece, por exemplo, no final do método de execução das variáveis locais. Se você deseja "forçar" a liberação dos recursos do objeto a qualquer momento, você pode anular suas referências.
Exemplo
var $f : 4D. File
var $fhandle : 4D. FileHandle
$f:=Folder(Database folder).file("example.txt")
//Escrever linha por linha do início
$fhandle:=$f.open("write")
$text:="Hello World" For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
//Escrever linha por linha do final
$fhandle:=$f.open("append")
$text:="Hello New World!"
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
//Leitura usando um carácter de paragem e um parâmetro objecto
$o:=New object()
$o.mode:="read"
$o.charset:="UTF-8"
$o.breakModeRead:=Document with CRLF
$stopChar:="!"
$fhandle:=$f.open($o)
$text:=$fhandle.readText($stopChar)
//Leitura linha a linha
$lines:=New collection
$fhandle:=$f.open("read")
While (Not($fhandle.eof))
$lines.push($fhandle.readLine())
End while
Objeto FileHandle
Os objectos handle de arquivos não podem ser partilhados.
.breakModeRead : Text o modo de processamento para quebras de linha utilizado na leitura do arquivo |
.breakModeWrite : Text o modo de processamento para quebras de linha utilizado quando se escreve no arquivo |
.charset : Text o charset utilizado na leitura ou na escrita do arquivo |
.eof : Boolean Verdadeiro se offset chegou ao fim do arquivo, e Falso caso contrário |
.file: 4D.File o objeto 4D.File no qual o identificador foi criado |
.getSize() : Real devolve o tamanho atual do documento, expresso em bytes |
.mode : Text o modo em que foi criado o tratamento do arquivo: "ler", "escrever", ou "anexar". |
.offset : Real o offset aual do fluxo de dados (posição no interior do documento) |
[.readBlob( bytes : Real ) : 4D. Blob ](#readblob) devolve um blob a bytes tamanho do arquivo, a partir da posição atual |
.readLine() : Text devolve uma linha de texto da posição atual até ser encontrado um delimitador de fim de linha ou até ser alcançado o fim do documento |
.readText( { stopChar : Text } ) : Text devolve texto do arquivo, a partir da posição atual até à primeira stopChar string ser encontrada (se passada) ou o fim do arquivo ser alcançado |
.setSize( size : Real ) estabelece um novo tamanho ** em bytes para o documento |
[ |
.writeLine( lineOfText : Text ) escreve lineOfText conteúdo na posição atual e insere um delimitador de fim de linha |
.writeText( textToWrite : Text ) escreve textToWrite conteúdo na posição atual e não insere um delimitador final de fim de linha |
.breakModeRead
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.breakModeRead : Text
Descrição
A propriedade .breakModeRead
devolve o modo de processamento para quebras de linha utilizado na leitura do arquivo.
A propriedade .breakModeWrite
pode ser definida na criação do handle com a função file.open()
(ver a função .open()
função para mais informações). O padrão é "nativo".
A propriedade
.breakModeRead
contém sempre um valor de texto, mesmo que a opção.open()
tenha sido definida usando um número (constante).
Essa propriedade é apenas leitura.
.breakModeWrite
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.breakModeWrite : Text
Descrição
A propriedade .breakModeWrite
devolve o modo de processamento para quebras de linha utilizado quando se escreve no arquivo.
A propriedade .breakModeRead
pode ser definida na criação do cabo com a função file.open()
(ver o .open()
function para mais informações). O padrão é "nativo".
A propriedade
.breakModeWrite
contém sempre um valor de texto, mesmo que a opção.open()
tenha sido definida utilizando um número (constante).
Essa propriedade é apenas leitura.
.charset
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.charset : Text