fso - tratando drives, diretórios e arquivos
DESCRIPTION
Dicas sobre Visual BasicTRANSCRIPT
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 1/9
Usando o FileSystemObject ‐ FSO ‐Tratando arquivos e diretórios.
Programando com o objeto FSO
Se ao precisar criar , mover, deletar e obter informações sobre diretórios e arquivos noVB você usa as API do Windows talvez este artigo lhe seja útil: Você pode fazer tudoisto sem recorrer as API's. O VB6 trouxe como novidade o objeto FileSystemObject quepermite fazer praticamente todo este serviço e obter qualquer informação sobrearquivos e diretórios de uma maneira simples.
O modelo para o FileSystemObject ‐ FSO , é o seguinte:
Objeto DescriçãoDrive Permite obter informações sobre os drives ( CD‐ROM, RAM disk,
etc.) existentes no sistema, espaço disponível , nome, etc.Folder Pemite criar , excluir, copiar e mover diretórios e obter
informações como nome, caminho, data de criação , etc.Files Pemite criar , excluir , copiar e mover arquivos e obter
informações como nome, caminho, data de criação , etc.FileSystemObject O principal objeto do grupo, possui métodos que permitem criar,
excluir, mover e obter as mais variadas informações sobre drives,arquivos e diretórios .
TextStream Permite a leitura e a escrita em arquivos textos.
Para usar o FSO faça o seguinte:
1. Defina um objeto FSO usando o método CreateObject ou declarando ( DIM ) umavariável objeto FSO.
2. Use o método apropriado para criar o objeto definido3. Acesse as propriedades do objeto FSO.
O objeto FSO esta presente em uma type library chamada Scripting a qual esta contidano arquivo Scrrun.dll. E você deve fazer uma referência a esta library em seu projetopara poder usar o FSO . Para isto selecione no menu Project‐>References... procurepor 'Microsoft Scripting Runtime' .
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 2/9
Vejamos como criar um objeto FSO . Podemos fazer isto de duas maneiras:
1‐) Declarando uma variável objeto FSO. (funciona somente no VB )
Dim fso As New FileSystemObject
2‐) Usando o método CreateObject : (funciona no VB e no VBScript)
set fso = CreateObject("Scripting.FileSystemObject")
Agora é só usar os métodos e propriedades do objeto criado. Para ver os métodos epropriedades do objeto clique no link : FSO ‐ métodos e propriedades. A seguirveremos alguns exemplos de utilização:
Acessando Drives, Diretórios e Arquivos.
Para acessar um drive , arquivo ou diretório existente use o método "Get" ( GetFile ,GetDrive) apropriado do FSO.
1‐ Acessando o arquivo teste.txt no diretório c:\teste e visualizando : o tamanho, adata de criaçao, a data de último acesso, a data da última modificação.(iremosmostrar a informação em um controle ListBox ‐ list1)
Inicie um novo projeto no VB e no formulário padrão insira um TextBox ‐ text1.text ‐ ,um ListBox ‐ list1 e um botão de comando ‐ command1 . Veja layout abaixo:
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 3/9
O resultado do processamento do códigoabaixo
Private Sub Command1_Click()Dim fso As New FileSystemObjectDim arq As File
Set arq = fso.GetFile(Text1.Text)
With arq List1.AddItem "Tamanho : " & vbTab & FormatNumber(.Size, 0) List1.AddItem "Data de criação : " & vbTab & .DateCreated List1.AddItem "Último acesso : " & vbTab & .DateLastAccessed List1.AddItem "Última alteração : " & vbTab & .DateLastModified List1.AddItem "nome abreviado : " & vbTab & .ShortNameEnd With
End Sub
2 ‐ Acessando o diretório c:\ e visualizando : a letra associada ao drive, o nome doVolume, espaço total, espaço disponível e o número de série do drive e o tipo dodriver. (iremos mostrar a informação em um controle ListBox ‐ list1)
Para verificar se o drive esta pronto usamos a propriedade IsReady.
Inicie um novo projeto no VB e no formulário padrão insira uma combobox ‐ combo1 ‐ ,um ListBox ‐ list1 e um botão de comando ‐ command1 : Veja layout abaixo
O resultado do processamento do código abaixo
Private Sub Command1_Click()Dim fso As New FileSystemObjectDim arquivo As driveSet arquivo = fso.GetDrive(Combo1.Text)With arquivo If .IsReady Then
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 4/9
List1.AddItem "Letra associada ao drive : " & .DriveLetter List1.AddItem "Nome do Volume : " & .VolumeName List1.AddItem "Espaço total do drive : " & FormatNumber(.TotalSize / 1024, 0) List1.AddItem "Espaço disponível livre no drive : " & FormatNumber(.FreeSpace / 1024, 0) List1.AddItem "Número de série do drive : " & .SerialNumber List1.AddItem "Tipo do drive: " & .DriveTypeElse MsgBox " A unidade não esta pronta !! Verifique !!", vbCritical, "Erro de acesso"End IfEnd WithEnd Sub
Tratamento de arquivos Texto1 ‐ Acessando arquivos texto : criando , lendo , copiando e excluindo...
Criando um arquivo em c:\teste chamado ArqTeste.txt e escrevendo no arquivo e aseguir lendo o conteúdo do arquivo e a seguir movendo o arquivo criado para odiretório c:\temp
Inicie um novo projeto no VB e no formulário padrão insira três TextBox ‐ text1 , text2e text3 e text4 e quatro botões de comando : (a caixa de texto que exibe o arquivodeve ser Multiline)
cmdcriararqtxtcmdlerarqtxtcmdcopiararqtxtcmdexcluirarqtxt
Veja layout abaixo:
O resultado do processamento docódigo abaixo
‐ O código da seção General Declarations do formulário :
Dim fso As New FileSystemObjectDim arqtxt As TextStreamDim arq1 As TextStreamDim arq3 As TextStreamDim arq2 As TextStreamDim texto As String
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 5/9
‐ O código do botão ‐ Criar Arquivo Texto: Observe o uso das propriedades Write eWriteline
Private Sub cmdcriararqtxt_Click()
On Error GoTo trataerro
Set arqtxt = fso.CreateTextFile(Text2.Text, True)'gravando no arquivo
With arqtxt .WriteLine ("Isto é um teste") .Write ("de gravação em arquivo texto.") .WriteLine (" Macoratti acabou de criar este arquivo texto") .Write "nome do arquivo " & Text2.Text .CloseEnd WithMsgBox " Arquivo : " & Text2.Text & " Criado com sucesso ", vbInformationExit Sub
trataerro:MsgBox Err.Description & " ‐ " & Err.Number, vbCritical
End Sub
‐ O código do botão ‐ Ler arquivo texto : Abrimos o arquivo para leitura e lemos todo oconteúdo do arquivo (ReadAll)
Private Sub cmdlerarqtxt_Click()'Lendo o arquivo criado
On Error GoTo trataerroSet arq2 = fso.OpenTextFile(Text3.Text, ForReading, True)texto = arq2.ReadAll
'mostrando o conteúdo do arquivoText1.Text = texto
arq2.CloseExit Sub
trataerro:If Err.Number = 53 Then MsgBox "Arquivo <<" & Text4.Text & ">> não encontrado !", vbCriticalElse MsgBox Err.Description & " ‐ " & Err.Number, vbCriticalEnd If
End Sub
‐ O código do botão ‐ Copiar arquivo texto : usamos a propriedade CopyFile
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 6/9
Private Sub cmdcopiararqtxt_Click()'Copiando o arquivo para c:\temp
On Error GoTo trataerro
fso.CopyFile Text4.Text, "c:\temp\", True
MsgBox "Arquivo => " & Text4.Text & " << COPIADO >> ", vbInformationExit Sub
trataerro:If Err.Number = 53 Then MsgBox "Arquivo <<" & Text4.Text & ">> não encontrado !", vbCriticalElse MsgBox Err.Description & " ‐ " & Err.Number, vbCriticalEnd IfEnd Sub
‐ O código do botão ‐ Excluir arquivo texto: Usamos a propriedade : DeleteFile.
Private Sub cmdexcluirarqtxt_Click()'Excluindo o arquivo de c:\teste
On Error GoTo trataerrofso.DeleteFile Text4.Text, True
MsgBox "Arquivo => " & Text4.Text & " << Excluido >> ", vbInformationExit Sub
trataerro:If Err.Number = 53 Then MsgBox "Arquivo <<" & Text4.Text & ">> não encontrado !", vbCriticalElse MsgBox Err.Description & " ‐ " & Err.Number, vbCriticalEnd If
End Sub
2 ‐ Criando um arquivo temporário
Vou mostrar agora como obter nome de um arquivo temporário e copiar um arquivopara este arquivo. Para isto vamos usar o método : GetTempName .
Este método um nome de arquivo/diretório temporário randomicamente que podemosusar para realizar algumas tarefas como copia ou backup. Exemplo :
Dim fso As New FileSystemObject
Call fso.CopyFile(Text1.Text, fso.GetTempName)
3 ‐ Localizando arquivos
Com a combinação de alguns métodos e propriedades do objeto FileSystemObject ealgum código podemos criar uma rotina para localizar arquivos. Vamos a ela...
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 7/9
Inicie um novo projeto no VB e no formulário padrão insira um TextBox ‐ text1.text ‐ ,um ListBox ‐ list1 e um botão de comando ‐ command1 . Veja layout abaixo:
O resultado doprocessamento do códigoabaixo
O código do botão de comando ‐ Iniciar Busca :
Private Sub cmdbusca_Click()
Call procuraArquivos(fso.GetFolder(Combo1.Text))
If Not achei Then msg = "Não foi possivel localizar o(s) arquivo(s) informado."Else msg = "Foram localizados " & contador & " arquivo(s) com sucesso."End If
MsgBox msg, vbInformation, "Localizando arquivos."
End Sub
Agora o código da rotina ‐ procuraArquivos ‐ onde passamos como argumento o driverinformado na combobox.
Private Sub procuraArquivos(diretorio As Folder)Dim arquivo As FileDim subdiretorio As Folder
For Each arquivo In diretorio.Files If arquivo.Name Like Text1.Text Then List1.AddItem arquivo.Name achei = True contador = contador + 1End IfNext
End Sub
Observe o uso do operador LIKE doVisual Basic.
A sintaxe de Like é a seguinte : result= string Like pattern
result ‐ qualquer variávelnuméricastring ‐ qualquer expressãostringpattern ‐ uma expressão stringde comparação
Exemplos :
1. Dim MyCheckMyCheck = "aBBBa" Like "a*a" 'Retorna True.MyCheck = "F" Like "[A‐Z]" 'Retorna True.
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 8/9
MyCheck = "F" Like "[!A‐Z]" 'Retorna False.MyCheck = "a2a" Like "a#a" 'Retorna True.
A utilização das propriedades é quase intuitiva , basta usar o intellisense que objetoexibirá as propriedades disponíveis . Moleza !!! não é mesmo ???
Tchau !!! Voltaremos a este assunto em breve , até la´....
Veja os Destaques e novidades do SUPER DVD
Visual Basic (sempre atualizado) : clique e confira
!
Quer migrar para o VB .NET ?
Veja mais sistemas completos para a
plataforma .NET no Super DVD .NET ,
confira...
Curso Básico VB .NET ‐ Vídeo Aulas
Quer aprender C# ??
Chegou o Super DVD C# com exclusivo
material de suporte e vídeo aulas com curso
básico sobre C#.
Curso C# Basico ‐ Video Aulas
Quer aprender os conceitos da
Programação Orientada a objetos ?
Curso Fundamentos da ProgramaçãoOrientada a Objetos com VB .NET
Quer aprender o gerar relatórios com o
ReportViewer no VS 2013 ?
Curso ‐ Gerando Relatórios com o
ReportViewer no VS 2013 ‐ Vídeo
Aulas
13/04/2015 FSO Tratando drives, diretórios e arquivos
http://www.macoratti.net/filesyst.htm 9/9
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Seção VB .NET do Site Macoratti.net
Super DVD .NET ‐ A sua porta de entrada na plataforma .NET
Super DVD Vídeo Aulas ‐ Vídeo Aula sobre VB .NET, ASP .NET e C#
Seção C# do site Macoratti.net
Super DVD C#
Super DVD Visual Basic
Curso Básico VB .NET ‐ Vídeo Aulas
Curso C# Básico ‐ Vídeo Aulas
jQuery ‐ Conceitos ‐ Macoratti.net
Entity Frameweork 4 ‐ Usando Data Annotations ‐ Macoratti
Compreendendo Models, Views e Controllers ‐ MVC
Padrões de Projeto ‐ O modelo MVC ‐ Model View Controller
ASP .NET ‐ MVC ‐ Introdução ‐ Macoratti.net
ASP .NET MVC 3 ‐ Um pouco de Validações e Verificações
C# ‐ Validando dados com Data Annotations ‐ Macoratti.net
Usando JSON com ASP .NET ‐ Macoratti.net
JSON ‐ Introdução e conceitos básicos ‐ Macoratti.net
ASP .NET ‐ Apresentando o ASP .NET MVC 3 ‐ Macoratti.net
ASP .NET ‐ Apresentando a sintaxe Razor ‐ Macoratti.net
.NET ‐ Razor, um pouco mais sobre ele ‐ Macoratti.net
José Carlos Macoratti