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:
- Em Templates : (General) - ASP.NET
Page
- Location : Informe o nome da localização dos
seus arquivos
- Filename : o nome do seu arquivo
- Language : Visual Basic .NET ( poderíamos
ter usado C#)
O editor WEB Matrix divide a exibição do seu
projeto em :
- Design - exibe os controles visuais
do seu projeto
- HTML - exibe o código Html do seu
projeto
- Code - exibe o código VB .NET ou C#
do seu projeto
- All - Exibe todo o código do projeto.
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 :
- Ao carregar a pagina LerArquivoVB.aspx
o controle listbox será carregado com os arquivos do diretório :
c:\inetpub\wwwroot
- Quando o usuário selecionar um arquivo e
clicar no botão - Exibir conteúdo do arquivo - seu conteúdo será exibido no
controle TextBox que a princípio não estará visível.
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:
- File
- Fornece métodos estáticos para criar , copiar , excluir , mover e abrir
arquivos. Vou usar o método OpenText que abre um
arquivo texto para leitura.
- Directory
- Expõe métodos
estáticos para criar , mover, enumerar através de diretórios e
subdiretórios. Como os métodos são estáticos não necessitamos criar uma
instância da classe Directory. Vou usar o método
GetFiles para obter os nomes dos arquivos em um diretório definido. A
sintaxe de GetFiles é a seguinte :
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.
- StreamReader
- Implementa um leitor que pode ler uma
sequência de caracteres em série de um fluxo de bytes. O método Peek
retorna o próximo caractere disponível.
- ArrayList
- Implementa uma interface IList que representa uma coleção de objetos
que pode ser acessado individualmente via um índice. Usa uma vetor cujo
tamanho é aumentando de forma dinâmica.
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