ASP .NET - Lendo e escrevendo em arquivos texto
Podemos ler e fazer alterações em arquivos texto usando uma das muitas classes da .NET Framework. Estou falando das classes : StreamWriter e StreamReader.
A classe StreamWriter implementa um TextWriter(um escritor que pode escrever uma série sequencial de caracter) para escrever para um fluxo de dados. Ela é especializada para a saída de caracteres em um modo de codificação particular. Os principais membros desta classe são :
Close | Fecha o StreamWriter atual e o stream correspondente. |
CreateObjRef (herdado de MarshalByRefObject) | Cria um objeto que contem todas as informações necessárias para gerar o proxy usado para se comunicar cum objeto remoto. |
Equals (herdado de Object) | Determina se duas instâncias de um objeto são iguais. |
Flush | Limpa todo o buffer do writer atual e de todos os fluxos correspondentes. |
GetType (herdado de Object) | Obtem o tipo da instância atual. |
ToString (herdado de Object) | Retorna uma String que representa o objeto atual. |
Write | Escreve para o stream.(fluxo) |
WriteLine (herdado de TextWriter) | Escreve os dados seguido por um terminador de linha. |
NewLine (herdado de TextWriter) | Obtem ou define o terminador de linha usado pelo TextWriter atual. |
A classe StreamReader implementa um TextReader que lê caracteres de um fluxo de byte em uma codificação particular.
Seus principais membros são:
Read | Lê o próximo caractere ou conjunto de caracteres de um fluxo de entrada. |
ReadBlock (herdado de TextReader) | Lê um máximo de caracteres do fluxo atual e escreve os dados para o buffer.. |
ReadLine | Lê uma linha de caracteres de um fluxo atual e retorna os dados como string. |
ReadToEnd | Lê o fluxo da posição atual até o fim do fluxo. |
Nosso exemplo prático irá ler o arquivo texto chamado texto.txt que deve estar presente na pasta data .(esta pasta deve estar na raiz da aplicação). Usamos o comando Server.MapPath("/data/texto.txt") para obter o arquivo.
Para criar a aplicação eu vou usar o Webmatrix (assim todos podem acompanhar):
Abra
o ASP.NET Web Matrix.
Selecione (General)
do painel Templates.
Selecione o modelo ASP.NET Page.
Digite um caminho de arquivo na caixa Location. (no meu
caso eu informei : d:\macoratti\aspnet\)
Digite EscreverTxt na caixa Filename. (você pode
usar qualquer outro nome de arquivo válido)
1- Na guia Design do WebMatrix insira os controles : TextBox (Multiline) , Button e Label.
O código HTML do arquivo é
dado a seguir: Nele vemos as definições dos controles e a
definição do evento OnClick do
botão de comando que chama a rotina salvarTxt
<html> <head> <title>Lendo e escrevendo em arquivo texto.</title> </head> <body> <form runat="server"> <p> <img height="32" src="maco10.gif" width="233" border="0" /> <font face="Verdana" size="2"> <strong><font size="3"><font color="#0000a0">Lendo e escrevendo em arquivos texto</font>.</font> </strong></font> </p> <asp:TextBox id="txtTextFile" Runat="server" TextMode="MultiLine" Rows="10" Width="594px"></asp:TextBox> <br /> <asp:Button id="button1" onclick="salvarTxt" Runat="server" Text="Salvar Alterações"></asp:Button> <p> <asp:placeholder id="ph1" Runat="server" Visible="False"> <hr /> <asp:Label id="label1" runat="server"></asp:Label> </asp:placeholder> </p><p></p><p> </p> </form> </body> </html> |
2- O código referente ao script VB.NET é dado abaixo. Nele estou fazendo o seguinte :
Dim
FilePath as String =
Server.MapPath("/data/texto.txt") Dim objFileWriter as StreamWriter Dim objStreamReader as StreamReader Dim sContents as String="" Sub Page_Load(Source as Object, E as EventArgs) if not Page.IsPostBack then LerArquivo() end if End Sub Sub salvarTxt(Source as Object, E as EventArgs) sContents = txtTextFile.text objFileWriter = File.CreateText(FilePath) objFileWriter.Write(sContents) objFileWriter.Close() LerArquivo ph1.visible="True" label1.Text="Alterações realizadas com sucesso !" End Sub Sub LerArquivo() objStreamReader = File.OpenText(FilePath) Dim contents as String = objStreamReader.ReadToEnd() txtTextFile.text = contents objStreamReader.Close() End Sub |
O código completo do arquivo - EsceverTxt.aspx - é dado a abaixo para você ter uma visão geral do mesmo:
<%@ Page Language="vb" %> <%@ import Namespace="System.IO" %> <script runat="server"> Dim FilePath as String = Server.MapPath("/data/texto.txt") Dim objFileWriter as StreamWriter Dim objStreamReader as StreamReader Dim sContents as String="" Sub Page_Load(Source as Object, E as EventArgs) if not Page.IsPostBack then LerArquivo() end if End Sub Sub salvarTxt(Source as Object, E as EventArgs) sContents = txtTextFile.text objFileWriter = File.CreateText(FilePath) objFileWriter.Write(sContents) objFileWriter.Close() LerArquivo ph1.visible="True" label1.Text="Alterações realizadas com sucesso !" End Sub Sub LerArquivo() objStreamReader = File.OpenText(FilePath) Dim contents as String = objStreamReader.ReadToEnd() txtTextFile.text = contents objStreamReader.Close() End Sub </script> <html> <head> <title>Lendo e escrevendo em arquivo texto.</title> </head> <body> <form runat="server"> <p> <img height="32" src="maco10.gif" width="233" border="0" /> <font face="Verdana" size="2"><strong><font size="3"><font color="#0000a0">Lendo e escrevendo em arquivos texto</font>.</font> </strong></font> </p> <asp:TextBox id="txtTextFile" Runat="server" TextMode="MultiLine" Rows="10" Width="594px"></asp:TextBox> <br /> <asp:Button id="button1" onclick="salvarTxt" Runat="server" Text="Salvar Alterações"></asp:Button> <p> <asp:placeholder id="ph1" Runat="server" Visible="False"> <hr /> <asp:Label id="label1" runat="server"></asp:Label> </asp:placeholder> </p> <p> </p> <p> </p> </form> </body> </html> |
Basta você copiar este código na guia All do seu Web Matrix , ajustar a localização do arquivo texto , e , rodar a aplicação.
Abaixo o resultado do processamento do script:
Eu sei , é apenas ASP.NET , mas eu gosto...
Referências: