Você está na página 1de 6

Usando o FileSystemObject - FSO - Tratando arquivos e diretrios.

Programando com o objeto FSO


Se ao precisar criar , mover, deletar e obter informaes sobre diretrios e arquivos no VB voc usa as API do Windows talvez este artigo lhe seja til: Voc pode fazer tudo isto sem recorrer as API's. O VB6 trouxe como novidade o objeto FileSystemObject que permite fazer praticamente todo este servio e obter qualquer informao sobre arquivos e diretrios de uma maneira simples. O modelo para o FileSystemObject - FSO , o seguinte:
Objeto Drive Folder Files FileSystemObject TextStream Descrio Permite obter informaes sobre os drives ( CD-ROM, RAM disk, etc.) existentes no sistema, espao disponvel , nome, etc. Pemite criar , excluir, copiar e mover diretrios e obter informaes como nome, caminho, data de criao , etc. Pemite criar , excluir , copiar e mover arquivos e obter informaes como nome, caminho, data de criao , etc. O principal objeto do grupo, possui mtodos que permitem criar, excluir, mover e obter as mais variadas informaes sobre drives, arquivos e diretrios . Permite a leitura e a escrita em arquivos textos.

Para usar o FSO faa o seguinte:

1. Defina um objeto FSO usando o mtodo CreateObject ou declarando ( DIM ) uma varivel objeto FSO. 2. Use o mtodo apropriado para criar o objeto definido 3. Acesse as propriedades do objeto FSO.
O objeto FSO esta presente em uma type library chamada Scripting a qual esta contida no arquivo Scrrun.dll. E voc deve fazer uma referncia a esta library em seu projeto para poder usar o FSO . Para isto selecione no menu Project->References... procure por 'Microsoft Scripting Runtime' .

Vejamos como criar um objeto FSO . Podemos fazer isto de duas maneiras: 1-) Declarando uma varivel objeto FSO. (funciona somente no VB ) Dim fso As New FileSystemObject 2-) Usando o mtodo CreateObject : (funciona no VB e no VBScript) set fso = CreateObject("Scripting.FileSystemObject") Agora s usar os mtodos e propriedades do objeto criado. Para ver os mtodos e propriedades do objeto clique no link : FSO - mtodos e propriedades. A seguir veremos alguns exemplos de utilizao:

Acessando Drives, Diretrios e Arquivos.

Para acessar um drive , arquivo ou diretrio existente use o mtodo "Get" ( GetFile , GetDrive) apropriado do FSO. 1- Acessando o arquivo teste.txt no diretrio c:\teste e visualizando : o tamanho, a data de criaao, a data de ltimo acesso, a data da ltima modificao.(iremos mostrar a informao em um controle ListBox - list1) Inicie um novo projeto no VB e no formulrio padro insira um TextBox - text1.text - , um ListBox - list1 e um boto de comando - command1 . Veja layout abaixo:

O resultado do processamento do cdigo abaixo

Private Sub Command1_Click() Dim fso As New FileSystemObject Dim arq As File Set arq = fso.GetFile(Text1.Text) With arq List1.AddItem List1.AddItem List1.AddItem List1.AddItem List1.AddItem End With End Sub
2 - Acessando o diretrio c:\ e visualizando : a letra associada ao drive, o nome do Volume, espao total, espao disponvel e o nmero de srie do drive e o tipo do driver. (iremos mostrar a informao em um controle ListBox - list1) Para verificar se o drive esta pronto usamos a propriedade IsReady. Inicie um novo projeto no VB e no formulrio padro insira uma combobox - combo1 - , um ListBox - list1 e um boto de comando - command1 : Veja layout abaixo

"Tamanho : " & vbTab & FormatNumber(.Size, 0) "Data de criao : " & vbTab & .DateCreated "ltimo acesso : " & vbTab & .DateLastAccessed "ltima alterao : " & vbTab & .DateLastModified "nome abreviado : " & vbTab & .ShortName

O resultado do processamento do cdigo abaixo

Private Sub Command1_Click() Dim fso As New FileSystemObject Dim arquivo As drive Set arquivo = fso.GetDrive(Combo1.Text) With arquivo If .IsReady Then List1.AddItem "Letra associada ao drive : " & .DriveLetter

List1.AddItem "Nome do Volume : " & .VolumeName List1.AddItem "Espao total do drive : " & FormatNumber(.TotalSize / 1024, 0) List1.AddItem "Espao disponvel livre no drive : " & FormatNumber(.FreeSpace / 1024, 0) List1.AddItem "Nmero de srie do drive : " & .SerialNumber List1.AddItem "Tipo do drive: " & .DriveType Else MsgBox " A unidade no esta pronta !! Verifique !!", vbCritical, "Erro de acesso" End If End With End Sub Tratamento de arquivos Texto
1 - Acessando arquivos texto : criando , lendo , copiando e excluindo... Criando um arquivo em c:\teste chamado ArqTeste.txt e escrevendo no arquivo e a seguir lendo o contedo do arquivo e a seguir movendo o arquivo criado para o diretrio c:\temp Inicie um novo projeto no VB e no formulrio padro insira trs TextBox - text1 , text2 e text3 e text4 e quatro botes de comando : (a caixa de texto que exibe o arquivo deve ser Multiline) cmdcriararqtxt cmdlerarqtxt cmdcopiararqtxt cmdexcluirarqtxt Veja layout abaixo:

O resultado do processamento do cdigo abaixo

- O cdigo da seo General Declarations do formulrio : Dim Dim Dim Dim Dim Dim fso As New FileSystemObject arqtxt As TextStream arq1 As TextStream arq3 As TextStream arq2 As TextStream texto As String

- O cdigo do boto - Criar Arquivo Texto: Observe o uso das propriedades Write e Writeline 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 gravao em arquivo texto.") .WriteLine (" Macoratti acabou de criar este arquivo texto")

.Write "nome do arquivo " & Text2.Text .Close End With MsgBox " Arquivo : " & Text2.Text & " Criado com sucesso ", vbInformation Exit Sub trataerro: MsgBox Err.Description & " - " & Err.Number, vbCritical End Sub - O cdigo do boto - Ler arquivo texto : Abrimos o arquivo para leitura e lemos todo o contedo do arquivo (ReadAll) Private Sub cmdlerarqtxt_Click() 'Lendo o arquivo criado On Error GoTo trataerro Set arq2 = fso.OpenTextFile(Text3.Text, ForReading, True) texto = arq2.ReadAll 'mostrando o contedo do arquivo Text1.Text = texto arq2.Close Exit Sub trataerro: If Err.Number = 53 Then MsgBox "Arquivo <<" & Text4.Text & ">> no encontrado !", vbCritical Else MsgBox Err.Description & " - " & Err.Number, vbCritical End If End Sub - O cdigo do boto - Copiar arquivo texto : usamos a propriedade CopyFile 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 >> ", vbInformation Exit Sub trataerro: If Err.Number = 53 Then MsgBox "Arquivo <<" & Text4.Text & ">> no encontrado !", vbCritical Else MsgBox Err.Description & " - " & Err.Number, vbCritical End If End Sub - O cdigo do boto - Excluir arquivo texto: Usamos a propriedade : DeleteFile.

Private Sub cmdexcluirarqtxt_Click() 'Excluindo o arquivo de c:\teste On Error GoTo trataerro

fso.DeleteFile Text4.Text, True


MsgBox "Arquivo => " & Text4.Text & " << Excluido >> ", vbInformation Exit Sub trataerro: If Err.Number = 53 Then MsgBox "Arquivo <<" & Text4.Text & ">> no encontrado !", vbCritical

Else MsgBox Err.Description & " - " & Err.Number, vbCritical End If End Sub
2 - Criando um arquivo temporrio Vou mostrar agora como obter nome de um arquivo temporrio e copiar um arquivo para este arquivo. Para isto vamos usar o mtodo : GetTempName . Este mtodo um nome de arquivo/diretrio temporrio randomicamente que podemos usar 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 combinao de alguns mtodos e propriedades do objeto FileSystemObject e algum cdigo podemos criar uma rotina para localizar arquivos. Vamos a ela... Inicie um novo projeto no VB e no formulrio padro insira um TextBox - text1.text - , um ListBox - list1 e um boto de comando - command1 . Veja layout abaixo:

O resultado do processamento do cdigo abaixo

O cdigo do boto de comando - Iniciar Busca :

Private Sub cmdbusca_Click() Call procuraArquivos(fso.GetFolder(Combo1.Text)) If Not achei Then msg = "No 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 cdigo da rotina - procuraArquivos - onde passamos como argumento o driver informado na combobox.

Observe o uso do operador LIKE do Visual Basic.

Private Sub procuraArquivos(diretorio As Folder) A sintaxe de Like a seguinte : result = string Like Dim arquivo As File pattern Dim subdiretorio As Folder result - qualquer varivel numrica

For Each arquivo In diretorio.Files If arquivo.Name Like Text1.Text Then List1.AddItem arquivo.Name achei = True contador = contador + 1 End If Next End Sub

string - qualquer expresso string pattern - uma expresso string de comparao Exemplos : 1. Dim MyCheck
MyCheck True. MyCheck True. MyCheck False. MyCheck True. = "aBBBa" Like "a*a" ' Retorna = "F" Like "[A-Z]" ' Retorna = "F" Like "[!A-Z]" ' Retorna = "a2a" Like "a#a" ' Retorna

A utilizao das propriedades quase intuitiva , basta usar o intellisense que objeto exibir as propriedades disponveis . Moleza !!! no mesmo ??? Tchau !!! Voltaremos a este assunto em breve , at la....

Jos Carlos Macoratti

Você também pode gostar