Lendo arquivos através da FWFileReader – Maratona AdvPL e TL++ 217

Nesse vídeo demonstraremos a utilização da classe FWFileReader, que serve para abrir e realizar a leitura de um arquivo.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe217
Exemplo de função que realiza leituras de um arquivo
@type Function
@author Atilio
@since 20/02/2023
@see https://tdn.totvs.com/display/public/framework/FWFileReader
@obs 

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe217()
    Local aArea := FWGetArea()
    Local cArquivo := "C:\spool\curso\exemplo_query.sql"
    Local cConteudo := ""
    Local oFile

    /*
        Exemplo 1 - Fazendo a leitura do arquivo inteiro
    */

    //Se o arquivo existir
    If File(cArquivo)

        //Tenta abrir o arquivo e pegar o conteudo
        oFile := FwFileReader():New(cArquivo)
        If oFile:Open()
 
            //Se deu certo abrir o arquivo, pega o conteudo e exibe
            cConteudo  := oFile:FullRead()
            ShowLog(cConteudo)
        EndIf
        oFile:Close()
    EndIf

    /*
        Exemplo 2 - Fazendo a leitura do arquivo linha a linha
    */

    //Se o arquivo existir
    If File(cArquivo)

        //Tenta abrir o arquivo e pegar o conteudo
        oFile := FwFileReader():New(cArquivo)
        If oFile:Open()
 
            //Pegando o total de linhas
            aLinhas := oFile:GetAllLines()
            nTotLinhas := Len(aLinhas)
            nLinhaAtu := 0
             
            //Método GoTop não funciona (dependendo da versão da LIB), deve fechar e abrir novamente o arquivo
            oFile:Close()
            oFile := FWFileReader():New(cArquivo)
            oFile:Open()

            //Enquanto tiver linhas
            While (oFile:HasLine())
                nLinhaAtu++

                //Pega a linha atual e exibe
                cLinAtu := oFile:GetLine()
                ShowLog("Linha '" + cValToChar(nLinhaAtu) + "': " + cLinAtu)
            EndDo
        EndIf
        oFile:Close()

    EndIf

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação