ASP.NET
- Exibindo os nomes de arquivos de um diretório
Preencher uma controle ListBox
com os nomes dos arquivos de um diretório é uma tarefa relativamente
simples de ser feita mesmo em páginas ASP.NET.
Você vai precisar
dos seguintes ingredientes :
- Importar o namespace
System.Collections
- Importar o namespace
System.IO
- Obter os arquivos do
diretório desejado usando Directory.GetFiles("caminho_e_extensão_dos_arquivos")
- Percorrer a
lista retornada e preencher um ArrayList
- Com o ArrayList
preenchido basta vinculá-lo a um componente lista do tipo ListBox
Para subsidiar
os seus conhecimentos a respeito de coleções leia o artigo :
VB.NET - Usando Coleções.
Vale lembrar que
em uma página ASP.NET você pode não ter acesso para realizar
determinadas tarefas.
Vamos agora a parte
prática onde eu vou mostrar o código que realiza este serviço.
Vou usar o Web Matrix como editor do código e para testar o código
vou usar o servidor do WebMatrix , assim você não precisa ter o
VS.NET nem o IIS instalado ; precisa ter somente a plataforma .NET instalada
e o Web Matrix ; ambos você obtêm no site da microsoft sem gastar
um centavo. (só conta telefônica...)
Inicie o WebMatrix
e na janela - Add New file - Selecione:
Templates - (General)
ASP.NET Page
Location - D:\aspnet\ (faça os ajustes para sua configuração)
FileName - ListaArquivos.aspx
Language - Visual Basic . NET
No modo Design
do Web Matrix , na aba Design insira os seguinte controles :
Na guia Code vamos
incluir o código que irá efetivamente realizar a operação
:
Neste código
cabe destacar os seguintes pontos:
- Declaramos a
variável nomeArquivo como pública
- No evento Page_Load na primeira vez que a página for
submetida temos o seguinte :
- Definimos a
varável diretório como do tipo Directory -
Dim diretorio As Directory
- criamos um arrayList
chamado listaValores - Dim
listaValores As ArrayList = New ArrayList
- Obtivemos todos
(*) os arquivos da pasta d:\inetpub\wwwroot -
Directory.GetFiles("d:\Inetpub\wwwroot\", "*")
- Percorremos
a relação de arquivos atribuindo o nome do arquivo a variável
pública nomeArquivo - nomeArquivo
= arquivos(i)
- Retiramos do
nome do arquivo o caminho completo
- nomeArquivo
= nomeArquivo.Replace("d:\Inetpub\wwwroot\", "")
- Incluímos
o nome do arquivo no arrayList - listaValores.Add(nomeArquivo)
- Atribuimos
o arrayList a propriedade DataSource do ListBox - ListBox1.DataSource
= listaValores
- Vinculamos o
arraList ao componente ListBox
- ListBox1.DataBind
O código
completo esta exibido abaixo:
<%@
Page Language="VB" %>
<%@ import Namespace="System.Collections" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
Dim nomeArquivo as String
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Not IsPostBack Then
Dim diretorio As Directory
Dim listaValores As ArrayList = New ArrayList
Dim arquivos As String() = Directory.GetFiles("d:\Inetpub\wwwroot\",
"*")
Dim i As Integer = 0
While i < arquivos.Length
nomeArquivo = arquivos(i)
nomeArquivo = nomeArquivo.Replace("d:\Inetpub\wwwroot\",
"")
listaValores.Add(nomeArquivo)
End While
ListBox1.DataSource = listaValores
ListBox1.DataBind
End If
End Sub
Sub SubmitBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
If ListBox1.SelectedIndex > -1 Then
Label1.Text = "Opção selecionada
-> " + ListBox1.SelectedItem.Text
End If
End Sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<h3><font face="Verdana" color="#0000a0">Listando
arquivos de um diretório</font>
<hr />
</h3>
<p>
<font style="BACKGROUND-COLOR: yellow" face="Verdana"><strong>Exibindo
os arquivos
da pasta d:\inetpub\wwwroot</strong></font>
</p>
<p>
<br />
<asp:ListBox id="ListBox1" runat="server"
Rows="1" Width="204px"></asp:ListBox>
<asp:button id="Button1" onclick="SubmitBtn_Click"
runat="server" Text="Enviar"></asp:button>
</p>
<p>
<asp:Label id="Label1" runat="server"
font-size="10pt" font-name="Verdana" forecolor="Red"
font-bold="True" font-names="Comic Sans MS"></asp:Label>
</p>
</form>
</body>
</html>
|
Executando o projeto
no servidor Web Matrix local temos:
Eu
sei é apenas ASP.NET mas eu gosto...
José
Carlos Macoratti