Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
portuguese
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css

...

...

Pagetitle

...

FWrite

FWrite

Escreve

...

dados

...

de

...

um

...

buffer

...

de

...

string

...

em

...

um

...

arquivo

...

binário.

...

Para

...

isso,

...

pode-se

...

escrever

...

todo

...

ou

...

parte

...

do

...

conteúdo

...

do

...

buffer,

...

limitando

...

a

...

quantidade

...

de

...

bytes.

Sintaxe

Bloco de código
collapsefalse
FWrite( <
nHandle>
 nHandle >, <
cBuffer>
 cBuffer >, [ nQtdBytes ] )
--> nRet

Parâmetros

...

Nome

Tipo

Descrição

Obrigatório

Referência

nHandle

...

numérico

Indica o manipulador de arquivo obtido através das funções FCreate() e FOpen().

X

 

cBuffer

...

caractere

Indica a string que será escrita no arquivo especificado. O tamanho desta variável deve ser maior ou igual ao tamanho informado no parâmetro (caso seja informado o tamanho).

X

 

nQtdBytes

...

numérico

Indica a quantidade de bytes que serão escritos a partir da posição atual do ponteiro de arquivos. Caso não seja informado, todo o conteúdo do parâmetro é escrito.

 

 

 

Retorno

Nome

Tipo

Descrição

...

nRet

...

numérico

Retorna a quantidade de bytes escritos na forma de um valor numérico inteiro. Caso o valor seja igual ao parâmetro <nQtdBytes>, a operação foi realizada com sucesso; caso contrário, se o valor for menor ou zero, o disco rígido está cheio ou ocorreu erro.

Observações

  • A escrita começa a partir da

...

  • posição atual do ponteiro de arquivos e a função retorna a quantidade real de bytes escritos.
  • Através das funções FOpen()

...

  • e FCreate(), pode-se abrir ou criar um arquivo, abrir uma porta de comunicação para gravar ou enviar os dados do buffer informado.
  • Essa função suporta na string, do parâmetro , todos os caracteres da tabela ASCII, inclusive caracteres de controle (ASC 0, ASC 12, ASC 128, etc.).
  • A gravação no arquivo é realizada a partir da posição atual do ponteiro, mas pode ser ajustado através das funções FSeek(), FRead() ou FReadStr().
  • Se o retorno da

...

  • função for menor que o parâmetro ou zero, o disco rígido está cheio ou ocorreu erro. Neste caso, utilize a função FError() para obter mais detalhes.

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
//Exemplo 
1#include
1
#include "fileio.ch"
...

User Function exemplo1()
  // Abre o 
arquivonHandle
arquivo
  nHandle := fopen('c:\garbage\teste.txt' , FO_READWRITE + FO_SHARED )
  If nHandle == -1
    
MsgStop('Erro de abertura : FERROR '+str(ferror(),4))
Else

  Else
    FSeek(nHandle, 0, FS_END)         // Posiciona no fim do arquivo
    FWrite(nHandle, "Nova Linha", 10) // Insere texto no arquivo
    fclose(nHandle)                   // Fecha arquivo
    MsgAlert('Processo concluído')
  Endif
Return
Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
//Exemplo 2
#INCLUDE "FILEIO.CH"
Endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Exemplo 2
//Este exemplo realiza uma cópia de um arquivo Texto chamado ORIGEM.TXT, para um arquivo chamado DESTINO.TXT, no ambiente do Servidor de Aplicação.
#INCLUDE "FILEIO.CH"

#DEFINE F_BLOCK 1024
    // Define o bloco de Bytes a serem lidos / gravados por 
vezUser
vez
User Function TestCopy()
  Local cBuffer := SPACE(F_BLOCK)
  Local nHOrigem
, nHDestino
  Local nBytesLidos, nBytesFalta, nTamArquivo
  
nBytesFalta , nTamArquivoLocal
Local nBytesLer
, nBytesSalvoLocal
  lCopiaOk := .T.
  // Abre o arquivo de 
OrigemnHOrigem
Origem
  nHOrigem := FOPEN("ORIGEM.TXT", FO_READ)
  // Testa a abertura do Arquivo
 
ArquivoIf
 If nHOrigem == -1

    MsgStop('Erro
 
ao abrir origem. Ferror = '+str(ferror(),4),'Erro')

    Return .F.
  Endif
  // Determina o tamanho do arquivo de origem
  nTamArquivo 
de origemnTamArquivo
:= Fseek(nHOrigem,0,2)
  // Move o ponteiro do arquivo de origem para o inicio do arquivo
 
arquivoFseek
 Fseek(nHOrigem,0)
  // Cria o arquivo de 
destinonHDestino
destino
  nHDestino := FCREATE("DESTINO.TXT", FC_NORMAL)
  // Testa a criação do arquivo de 
destinoIf
destino
  If nHDestino == -1

    MsgStop('Erro ao criar destino. 
Ferror = '+str(ferror(),4),'Erro')

    FCLOSE(nHOrigem)
  // Fecha o arquivo de Origem

    Return .F.
  Endif
  // Define que a quantidade que falta copiar é o próprio tamanho do Arquivo
 
ArquivonBytesFalta
 nBytesFalta := nTamArquivo
  // Enquanto houver dados a serem 
copiadosWhile
copiados
  While nBytesFalta > 0

    // Determina quantidade de dados a serem 
lidos
  
a
 
serem
 
lidos
nBytesLer 
:= Min(nBytesFalta
, F_BLOCK )

    // lê os dados do Arquivo
nBytesLidos

    nBytesLidos 
:= FREAD(nHOrigem, @cBuffer, nBytesLer )

    // Determina se não houve falha na leitura
    
If nBytesLidos < nBytesLer
    
<
  
nBytesLer
MsgStop(
"Erro de Leitura da Origem. "
+;
 + Str(nBytesLer,8,2) + " bytes a LER."
+;
 + Str(nBytesLidos,8,2) + " bytes Lidos."
+;
 + "Ferror = " + str(ferror(),4),'Erro')
lCopiaOk

      lCopiaOk := .F.
Exit Endif

      Exit
    Endif
    // Salva os dados lidos no arquivo de destino

    nBytesSalvo := FWRITE(nHDestino, cBuffer,nBytesLer)
    
cBuffer,nBytesLer)
// Determina se não houve falha na gravação

    If nBytesSalvo < nBytesLer
      
nBytesLer
MsgStop("Erro de gravação do Destino. "
+;
 + Str(nBytesLer,8,2) + " bytes
 a SALVAR."
+;
 + Str(nBytesSalvo,8,2) + " bytes gravados."
+;
 + "Ferror = " + str(ferror(),4),'Erro')

      lCopiaOk := .F.
EXIT Endif

      EXIT
    Endif
    // Elimina do Total do Arquivo a quantidade de bytes copiados

    nBytesFalta -= 
nBytesLerEnddo
nBytesLer
  Enddo
  // Fecha os arquivos de origem e 
destinoFCLOSE
destino
  FCLOSE(nHOrigem)
  FCLOSE(nHDestino)
  If lCopiaOk

    MsgStop('Cópia de Arquivos finalizada com sucesso. ' +
;
 str(nTamArquivo,12,0) + '
 bytes copiados.','Final')
Else

  Else
    MsgStop(
'Falha na Cópia. Arquivo de Destino incompleto. ' +
;
 'Do 
total de ' + str(nTamArquivo,12,0) + ' bytes, faltaram ' + str(nBytesFalta,12,0)+' bytes.','Final')
EndifReturn
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
 

  Endif
Return

Veja também