ASP.NET - Lendo Arquivos HTML
Neste breve artigo vou mostrar como você pode usar a classe StreamReader para ler arquivo HTML , linha por linha , e exibir o contéudo em um controle Label.
No código estamos substituindo o line feed e carriage Return pelo equivalente HTML ( <br> ). (Talvez seja necessário você fazer mais alguns ajustes.)
Para testar o código usei o WebMatrix . Lembre-se que usando o Web Matrix você não precisa nem ter o IIS instalado , apenas o .NET Framework 1.0 ou 1.1.
O código do arquivo é descrito conforme segue:
NO Web Matrix na guia HTML temos o código HTML do arquivo:
<html> <head> <title>Lendo arquivo HTML</title> <style type="text/css"> BODY { FONT-SIZE: 11pt; FONT-FAMILY: Verdana } </style> </head> <body> <form id="form1" runat="server"> <asp:Label id="lbltexto" runat="server"></asp:Label> <br /> <p> <asp:placeholder id="ph1" Runat="server" Visible="False"> <hr /> <asp:Label id="label1" runat="server"></asp:Label> </asp:placeholder> </p> </form> </body> </html> |
O código da guia Code mostra o script ASPX que , usando a classe StreamReader , lê o arquivo htm e o exibe na label:
Dim
CaminhoArquivo as String Dim objFileWriter as StreamWriter Dim objStreamReader as StreamReader Sub Page_Load(Source as Object, E as EventArgs) if not Page.IsPostBack then CaminhoArquivo=Server.MapPath("/macorati.htm") LeArquivo() end if End Sub Sub LeArquivo() objStreamReader = File.OpenText(CaminhoArquivo) Dim conteudo as String = objStreamReader.ReadToEnd() lblTexto.text = conteudo.Replace(vbcrlf, "<br>") objStreamReader.Close() End Sub |
Devemos também declarar no ínicio do código de script as linhas de código a seguir :
<%@
Page Language="vb" %>
<%@ import Namespace="System.IO" %>
Observe que eu estou usando o namespace System.IO
para ter acesso a classe StreamReader.
O código pode ser adaptado para ler um arquivo texto. Abaixo um exemplo de como você pode fazer isto:
<%@
Import Namespace="System.IO" %> <script language="vb" runat="server"> sub Page_Load(sender as Object, e as EventArgs) 'Abre o arquivo macorati.text Dim testfile as String = Server.MapPath("macorati.txt") 'cria a classe streamreader Dim objStreamReader as StreamReader 'abre o arquivo objStreamReader = File.OpenText(testfile) 'le o aruivo e armazena o conteudo lido em uma string Dim readfile as String = objStreamReader.ReadToEnd() 'poe a string no controle label lblTextFile.Text = readfile 'fecha a classe StreamReader objStreamReader.Close() end sub </script> <asp:label
runat="server" id="lblTextFile" /> |
Lendo arquivos delimitados
Da mesma forma para ler um arquivo delimitado basta fazer alguns ajustes no código e o serviço esta pronto. Veja como ficaria o código para ler um arquivo delimitado:
Note que estou definindo o delimitador , no caso , a virgula . É obvio que ao ler o arquivo texto o mesmo deverá vir com este delimitador.
Um exemplo de arquivo texto deste tipo seria:
11112004,72.5226,72.8971,68.1538,68.7155,55 12112004,68.2162,68.341,64.3467,64.6899,6208200 13112004,62.3027,67.7793,62.1622,64.2218,4569900 14112004,62.5991,65.907,62.1622,63.2857,4917500 15112004,65.907,70.2758,63.9098,67.2176,3681500 16112004,67.4048,69.2772,64.5339,67.9665,3439600 17112004,70.463,77.4532,68.4034,76.5794,4799800 18112004,73.5212,75.2687,65.2828,67.0928,8006700 |
Exemplo de arquivo texto delimitado por vírgula |
Abaixo o código complet para ler um arquivo delimitado por vírgulas como o exemplo acima:
<%@
Page Language="VB" %> <%@ import Namespace="System.IO" %> <script runat="server"> Sub page_load(Sender As Object,e As EventArgs) Dim arquivo as string arquivo=server.mappath("macorati.txt") dim filestream as StreamReader filestream = File.Opentext(arquivo) Dim leconteudo as String leconteudo = fileStream.ReadToEnd() Dim delimitador as String delimitador = "," Dim saida = Split(leconteudo, delimitador) lbltextoplano.text = leconteudo & "<br>" dim i as integer for i=0 to Ubound(saida) lbltextodelimitado.Text &= "<b>quebra : </b>" & i+1 & ") " & saida(i)& "<br>" next filestream.Close() End Sub </script> <asp:label align="center" ForeColor="Maroon" Font-Names="Arial" BackColor="LemonChiffon" BorderColor="#0000C0" runat="server" id="lbldisplay" Font-Name="Verdana" text="Lendo arquivos textos delimitados" /><br /> <br /><br /><b>Arquivo texto delimitado : </b><br /> <asp:label runat="server" id="lbltextoplano" Font-Name="Verdana" /><br /> <b>Saida : </b><br /> <asp:label runat="server" id="lbltextodelimitado" Font-Name="Verdana" /> <%-- End of script--%> |
O tratamento de arquivo no VB.NET é baseado no namespace System.IO onde temos o suporte a manipulação de strings , caracteres e arquivos. As classes mais usadas são : FileStream, BinaryReader, BinaryWriter, StreamReader and StreamWriter.
StreamReader trata a entrada de caracter para um encode particular , e , é usada para a leitura de linhas de informação de um arquivo texto padrão. Ele utiliza a codificação padrão UTF-8(trata caracteres Unicode) a menos que você especifique outro formato.
Leia também os seguintes artigos sobre tratamento de arquivos no VB.NET/ASP.NET:
E com isto vamos ficando por aqui. Até o próximo artigo ASP.NET...
José Carlos Macoratti