Introdução ao Modelo do File System Object no VB

Um novo recurso do Visual Basic é o File System Object, que fornece uma ferramenta baseada em objetos para trabalhar com pastas e arquivos. Isto permite que você use a sintaxe familiar de métodos e propriedades de objetos com um conjunto rico de propriedades, métodos e eventos para fazer o processamento destes elementos.

O modelo de objetos do FSO lhe dá a habilidade de criar, alterar, mover e excluir pastas e detectar se uma pasta particular existe, e, existindo, onde. Também permite que você obtenha informações sobre as pastas tais como seus nomes, a data em que foram criadas ou modificadas pela última vez e assim por diante.

O modelo de objetos do FSO faz o processamento de arquivos muito mais fácil

também. Quando está processando arquivos, você primeiramente tem como meta armazenar informação num formato eficiente tanto na ocupação de espaço como no acesso. Você precisa ser capaz de criar arquivos, incluir e atualizar e obter saída com eles. Se você usar os recursos de um banco de dados, isto pode ocasionar uma sobre carga de trabalho para a sua aplicação. Por muitas razões você pode não querer todo aquele aparato de acesso a dados no seu sistema ou o seu acesso aos dados pode não requerer todas os recursos de um sistema gerenciador de banco de dados. Neste caso, armazenar seus dados num arquivo binário ou de texto pode ser a solução mais eficiente.

O modelo de objetos do FSO, que está contido na Scripting type library (Scrrun.Dll), suporta criação de arquivos de texto e sua manipulação através do objeto TextStream. Ele ainda não suporta a criação e manipulação de arquivos binários. Para manipular arquivos binários, use o comando Open com o sinalizador Binary.

Os Objetos FSO

O modelo FSO contém estes objetos:

Objeto

Descrição

Drive

Permite que você obtenha informações dos drives anexados ao sistema, tais como quanto de espaço está disponível, qual o seu nome compartilhado e etc. Note que um drive não é necessariamente um disco rígido. Ele pode ser um drive de CD-ROM, um disco de RAM ou algo mais. Também não é necessário que um drive esteja fisicamente ligado ao sistema. Ele pode estar logicamente conectado através de uma LAN, por exemplo.

Folder

Permite que você crie, exclua, mova pastas e consulte o sistema sobre seus nomes, caminhos e outras informações.

Files

Permite que você crie, exclua, mova arquivos e consulte o sistema sobre seus nomes, caminhos e outras informações

FileSystemObject

O principal objeto do grupo, repleto de métodos que lhe possibilitam criar, excluir, obter informações sobre e manipular genericamente drives, pastas e arquivos. Muitos dos métodos associados a este objeto duplicam aqueles de outros objetos.

TextStream

Habilita-o para ler e gravar arquivos texto.

Programando com o Modelo de Objetos FSO

 

A programação com o FSO envolve três tarefas principais:

O modelo de objetos FSO está contida na biblioteca Scripting, que está localizada no arquivo Scrrun.Dll. Se você não tem uma referência a ele, crie uma marcando na caixa de diálogo References o item "Microsoft Scripting Runtime".

Criando um FileSystemObject

O primeiro passo é criar o objeto FileSystemObject com o qual se vai trabalhar. Você pode faze-lo de duas maneiras:

Criando uma variável do tipo FileSystemObject :

Dim fso As New FileSystemObject

ou

Usado o método CreateObject para criar um objeto FileSystemObject:

Set fso = CreateObject("Scripting.FileSystemObject")

Na sintaxe acima, Scripting é o nome da biblioteca de tipos e FileSystemObject é o nome do objeto do qual você quer criar uma instância.

Nota: O primeiro método funciona apenas no Visual Basic, enquanto o segundo funciona tanto no Visual Basic como no VBScript.

Usando o Método apropriado

O próximo passo é usar o método apropriado do objeto FileSystemObject. Por exemplo, se você quer criar um novo objeto, você pode tanto usar o método CreateFolder ou CreateTextFile. (O modelo de objetos FileSystemObject não suporta a criação ou exclusão de drives)

Se quer excluir objetos, você pode usar os métodos DeleteFile ou DeleteFolder do objeto FileSystemObject, ou o método Delete dos objetos File e Folder.

Usando os métodos apropriados, você pode também copiar e mover arquivos e pastas.

Note que parte da funcionalidade do FileSystemObject é redundante. Por exemplo, você pode copiar um arquivo tanto usando o método CopyFile do FileSystemObject quanto o método Copy do objeto File. Os métodos fazem o mesmo. Ambos existem para dar a máxima flexibilidade de programação.

Acessando Drives, Arquivos e Pastas Existentes

Para Ter acesso a um drive, arquivo ou pasta existente, use o método "get" apropriado do FileSystemObject.

GetDrive

 

GetFolder

 

GetFile

Por exemplo:

Dim fso As New FileSystemObject, fil As File

Set fil = fso.GetFile("c:\test.txt")

Note, contudo, que não é necessário usar os métodos "get" para os objetos recém criados, já que as funções de criação retornam uma referência ao recém criado objeto. Por exemplo, se você criar uma nova pasta usando CreateFolder, não tem que usar o método GetFolder para acessar suas propriedades tais como Name, Size, Path e outras mais. Basta atribuir a uma variável o retorno da função CreateFolder para ter acesso aos seus métodos, propriedades e eventos:

 

Private Sub Create_Folder()

Dim fso As New FileSystemObject, fldr As Folder

Set fldr = fso.CreateFolder("C:\MyTest")

MsgBox "Created folder: " & fldr.Name

End Sub

Acessando as Propriedades do Objeto

Uma vez que você tem uma referência a um objeto, pode acessar as suas propriedades . Por exemplo, digamos que você queira obter o nome de uma pasta em particular. Primeiro você cria uma instância do objeto e obtém uma referência a ele com o método apropriado (neste caso, o método GetFolder, já que a pasta já existe):

Set fldr = fso.GetFolder("c:\")

Agora que você tem uma referência ao objeto Folder e pode checar sua propriedade Name:

Debug.Print "Nome da pasta é: "; fldr.Name

Se você quer saber quando foi feita a última modificação em um arquivo, use a seguinte sintaxe:

Dim fso As New FileSystemObject, fil As File

Set fil = fso.GetFile("c:\detlog.txt") ' Obtém um objeto File para consulta.

Debug.Print "Última modificação no arquivo: "; fil.DateLastModified

 

Trabalhando com Arquivos

Você pode trabalhar com arquivos no Visual Basic 6 usando tanto usando os modernos recursos do modelo FSO como os antigos recurso já existentes. Independente do tipo de arquivo você pode move-lo, copia-lo ou exclui-lo.

Há duas principais categorias de manipulação de arquivos:

 

Criação e Adição de Dados com os FileSystemObjects

Há três caminhos para criar arquivos de texto sequenciais (às vezes referido como "text stream"). Um caminho é usar o método CreateTextFile. Para criar um arquivo de texto vazio:

Dim fso As New FileSystemObject, fil As File
Set fil = fso.CreateTextFile("c:\testfile.txt", True)

Nota O modelo FSO não suporta ainda a criação de arquivos randômicos ou binários. Para criar estes tipos de arquivos, use o comando Open com o argumento Random ou Binary.

Um outro meio é usar o método OpenTextFile do FileSystemObject com o flag ForWriting ligado:

Dim fso As New FileSystemObject, ts As New TextStream
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting)

Ou você pode usar o método OpenTextStream com o flag ForWriting ligado:

Dim fso As New FileSystemObject, fil As File, ts As TextStream
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("test1.txt")
Set fil = fso.GetFile("test1.txt")
Set ts = fil.OpenAsTextStream(ForWriting)

 

Adicionando Dados ao Arquivo

Uma vez que o arquivo esteja criado, você pode adicionar dados a em três etapas:

  1. Abra o arquivo texto para a gravação de dados
  2. Grave os dados
  3. Feche o arquivo

Para abrir o arquivo, você tem que usar um de dois métodos: OpenAsTextStream do objeto File , ou o método OpenTextFile do objeto FileSystemObject .

Para gravar dados para o arquivo texto, use ou o método Write ou WriteLine do objeto TextStream. A única diferença entre Write e WriteLine é que WriteLine adiciona caracteres de final de linha à string gravada. Se você quiser adicionar novas linhas ao arquivo de texto, use o método WriteBlankLines.

Par fechar um arquivo aberto, use o método Close do objeto TextStream. Aqui vai um exemplo de como abrir um arquivo, usar os três método de gravação e o seu fechamento:

Sub Create_File()
    Dim fso, txtfile
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txtfile = fso.CreateTextFile("c:\testfile.txt", True)
    txtfile.Write ("This is a test. ") ' Write a line.
    ' Write a line with a newline character.
    txtfile.WriteLine("Testing 1, 2, 3.") 
    ' Write three newline characters to the file.      
    txtfile.WriteBlankLines(3) 
    txtfile.Close
End Sub

 

Lendo Arquivos com os FileSystemObjects

Para ler dados de um arquivo texto, use os métodos Read, ReadLine ou ReadAll do objeto TextStream.

Tarefa

Método

Ler um número específico de caracteres de um arquivo.

Read

Ler uma linha inteira(até, mas não incluindo, o caractere de nova linha)

ReadLine

Ler o conteúdo total de um arquivo texto

ReadAll

 

 

Se você usar os métodos Read ou ReadLine e quiser saltar uma porção particular de dados, você pode usar os métodos Skip ou SkipLine.

O texto resultante dos métodos de leitura é armazenado em uma string que pode ser exibida num controle, manipulada por operadores de strings ( Tais como Left, Right, e Mid), concatenada e assim por diante.

Nota: A constante vbNewLine contém um caracter ou caracteres ( dependendo do sistema operacional) para avançar o cursor para o início da próxima linha (carriage-return/linefeed). Esteja consciente de que o final de algumas strings pode conter estes caracteres não imprimíveis.

Exemplo

Sub Read_Files()
    Dim fso As New FileSystemObject, txtfile, _
      fil1 As File, ts As TextStream
    Set txtfile = fso.CreateTextFile("c:\testfile.txt", True)
    MsgBox "Gravando arquivo"
    ' Write a line.
    Set fil1 = fso.GetFile("c:\testfile.txt")
    Set ts = fil1.OpenAsTextStream(ForWriting)
    ts.Write "Hello Mundo"
    ts.Close
    ' Lê o conteúdo do arquivo.
    Set ts = fil1.OpenAsTextStream(ForReading)
    s = ts.ReadLine
    MsgBox s
    ts.Close
End Sub

Movendo, Copiando, e Excluindo Arqiuvos

O modelo FSO tem dois métodos tando para mover, copiar ou excluir arquivos.

Tarefa

Método

Mover um arquivo

File.Move ou
FileSystemObject.MoveFile

Copiar um arquivo

File.Copy ou
FileSystemObject.CopyFile

Excluir um arquivo

File.Delete ou
FileSystemObject.DeleteFile

Exemplo

Este exemplo cria um arquivo texto no diretório raiz do drive C, grava alguma informação nele, move o para um diretório chamado \tmp, faz uma cópia dele em um diretório chamado \temp, e então exclui as cópias de ambos os diretórios.

Para rodar este exemplo, esteja certo de que você tem diretórios chamados \tmp e \temp no seu diretório raiz do drive C.

Sub Manip_Files()
    Dim fso as New FileSystemObject, txtfile, fil1, fil2
    Set txtfile = fso.CreateTextFile("c:\testfile.txt", True)
    MsgBox "Gravando arquivo"
    ' Grava uma linha.
    txtfile.Write ("Isto é um teste.")
    ' Fecha o arquivo.
    txtfile.Close
    MsgBox "Move o arquivo para c:\tmp"
    ' Obtém uma referência para o arquivo no diretório        
    ' raiz de C
    Set fil1 = fso.GetFile("c:\testfile.txt")
    ' Move para \tmp directory.
    fil1.Move ("c:\tmp\testfile.txt")
    MsgBox "Copiando para c:\temp"
    ' Copy the file to \temp.
    fil1.Copy ("c:\temp\testfile.txt")
    MsgBox "Excluindo"
    ' Obtém referências para os arquivos.
    Set fil1 = fso.GetFile("c:\tmp\testfile.txt")
    Set fil2 = fso.GetFile("c:\temp\testfile.txt")
    ' Exclui os arquivos.
    fil1.Delete
    fil2.Delete
    MsgBox "Tudo terminado!"
End Sub

Transporte código com mais facilidade com a dez memórias de cópia do RabJump