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.
Muito bom! O vídeo foi bastante explicativo e fácil de entender.
Porém, surgiu uma dúvida: existe o FWFileReader para leitura de arquivos e o FWFileWriter para escrita. Mas, para editar um arquivo, há alguma classe como a FWFile ou é necessário usar as funções FT_?
Por exemplo, se eu criar o arquivo texto.txt, ao invés de apagar o conteúdo toda vez que a função for executada, seria possível concatenar o conteúdo?
Bom dia Kauan, tudo joia?
Sim, seria possível. A lógica seria mais ou menos a seguinte:
a. Se o arquivo já existir
b. Você pode ler o conteúdo do arquivo
c. E depois no final do arquivo você adiciona o texto
Ai para a lógica acima, você teria alguns cenários, dentre eles:
1. Não me lembro se na FWFileWriter, ela permite você abrir um arquivo e já popular o final dele, se sim, você pode tentar
2. Caso a FWFileWriter não permita você abrir o arquivo e já popular o final, leia o arquivo inteiro com a FWFileReader e depois incremente e grave com a FWFileWriter
3. Se o arquivo não passar de 64kb, você pode ler ele com a MemoRead, incrementar e depois usar a MemoWrite
Tenha uma ótima e abençoada quarta feira.
Um grande abraço.