ASP.NET - Lendo arquivos e exibindo o seu conteúdo


ASP.NET permite realizar tarefas básicas de modo simples. Vou mostrar como obter os arquivos de um dado diretório e exibir o conteúdo do arquivo selecionado em um componente TextBox.

Se você esta começando agora com ASP.NET vou lhe dar boas novas:  "Tudo que você precisa para aprender a criar páginas ASP.NET esta disponível na Web no site www.asp.net e embora seja Microsoft é grátis (acredite se quiser)". Você vai precisar do seguinte :

Para mais detalhes em como usar o Web Matrix veja o artigo : Inserindo dados em um banco de dados Access.

Após instalar e configurar os aplicativos acima você pode testar o código deste artigo tranquilamente. Vamos ao nosso projeto...

Abra o Web Matrix e clique no Menu File | New. Você verá a tela a seguir. Agora selecione as opções conforme abaixo:

O editor WEB Matrix divide a exibição do seu projeto em :

Vou seguir esta padronização e começar o projeto com os controles de servidor que iremos usar no projeto.

Visão Design

Os controles de servidor - Web Controls - estão disponíveis na caixa de ferramentas(ToolBox) do lado esquerdo e para incluí-los no formulário basta estar no modo Design , selecionar e arrastar o controle para sua área de trabalho.

No nosso projeto iremos usar os seguintes controles : ListBox , Button , TextBox e Label.

O layout do modo design deve estar conforme a figura abaixo:

Como funciona :

Na figura acima você pode notar que cada controle pode se configurado na janela Properties. A janela exibe a classe a qual o controle pertence. No caso do TextBox - System.Web.UI.WebControls.TextBox

Visão HTML

A grande vantagem do Web Matrix é que o código HTML para os WebControls que você incluir e configurar no modo design já vai estar pronto. No nosso caso o código HTML gerado é :

<html>
<head>
</head>
<body bgcolor="aqua">
<form runat="server">
 

<h3><font style="BACKGROUND-COLOR: aqua"><font face="Trebuchet MS">Super Leitor de Arquivos - ASP.NET</font> </font> </h3>


<asp:ListBox id="ListBox1" runat="server" Rows="1" SelectionMode="Single"></asp:ListBox>
<asp:button id="Button1" onclick="SubmitBtn_Click" runat="server" Text="Exibir conteúdo do arquivo"></asp:button>
<p>
<b><asp:Label id="Label1" runat="server" font-size="10pt" font-name="Verdana"></asp:Label></b>
</p>
<p>
<asp:TextBox id="FileText" runat="server" cols="100" rows="35" Wrap="False" TextMode="MultiLine" Visible="False" BackColor="#FFFFC0" Width="441px" Height="177px"></asp:TextBox>
</p>
</form>
</body>
</html>
 

Criando o código do projeto

Na visão Code inserimos o código necessário para que o projeto funcione. Nosso projeto irá usar as seguintes classes para poder ler arquivos de uma pasta e exibir seu conteúdo:

Overloads Public Shared Function GetFiles(  ByVal path As String,    ByVal searchPattern As String ) As String()
Os parâmetros usados são :
path - o diretório de destino
searchPattern - o string que será usado para filtrar os nomes dos arquivos.

O código será implementado em dois eventos: Page_Load() e SubmitBtn_Click(). Abaixo o código:

'cria uma string para guardar o nome do arquivo
Public NomeArq As String
Public arq As String

Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

If Not IsPostBack Then

 'define o diretorio e o vetor
 Dim diretorio As Directory
 Dim valores As ArrayList = New ArrayList()

 'pega os arquivos do diretorio
 Dim Arquivos() As String = Directory.GetFiles("C:\Inetpub\wwwroot\","*")

 'faz a iteração através da lista , substitui o caminho e inclui no listbox com o método add
 
Dim i As Integer

 For i = 0 To Arquivos.Length- 1 Step i + 1
    NomeArq = Arquivos(i)
    NomeArq = NomeArq.Replace("C:\Inetpub\wwwroot\","")
    valores.Add (NomeArq)
 Next

 'vincula o listbox ao controle de dados
 ListBox1.DataSource = valores
 ListBox1.DataBind()

End If

End Sub



Public Sub SubmitBtn_Click(ByVal sender As Object, ByVal e As EventArgs)

If ListBox1.SelectedIndex > -1 Then
   Label1.Text = "Nome do Arquivo : " + ListBox1.SelectedItem.Text
End If

Dim caminho As String = "C:\Inetpub\wwwroot\" + ListBox1.SelectedItem.Text
Dim srLeitor As StreamReader = File.OpenText(caminho)

'define o inicio da leitura para o arquivo
srLeitor.BaseStream.Seek(0, SeekOrigin.Begin)

'começa a ler o arquivo e anexar a variavel mystring
'incluindo uma caractere return e newline para dar a quebra de linha
While srLeitor.Peek() > -1
   arq =arq + srLeitor.ReadLine() & vbcrlf
End While

'fecha o objeto
srLeitor.Close()

FileText.Text =arq
FileText.Visible = True

End Sub

No inicio do arquivo LerArquivoVB.aspx devemos informar as declarações import como a seguir :

<%@ Page Language="VB" %>
<%@ import Namespace="System.Collections" %>
<%@ import Namespace="System.IO" %>
<script runat="server">

Executando o projeto teremos como resultado :

Básico e fácil de implementar : ASP.NET.

Até o próximo artigo..


José Carlos Macoratti