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