VB.NET - Usando a classe Path


Com o advento da plataforma .NET , programar ficou muito mais fácil para quem usava o Visual Basic. O VB .NET incorpora um conjunto de classes com poderosos recursos que facilitam a codificação e poupam o tempo de desenvolvimento.

Neste artigo vou falar sobre o Namespace System.IO e em como ele pode facilitar a vida do programador Visual Basic. Como existem muitas classes neste namespace irei começar falando da classe Path e alguns dos seus métodos.

Se você já precisou fazer tratamento de arquivos no VB sabe que existe toda uma codificação para trabalhar com arquivos , nomes de arquivos , extensão de arquivo , caminho de arquivo , etc.

Vou fazer uma comparação entre a forma de codificar usada no VB6 e a nova forma usando a classe Path. Para isto a primeira coisa é definir algumas variáveis que serão usadas no projeto:

      Dim TesteCaminho As String
      Dim nPos As Integer
      Dim sNomeArquivo As String
      Dim sCaminhoCompleto As String
      Dim sExt As String
      TesteCaminho = "c:\teste\vbnet\teste.txt"

A seguir irei realizar algumas tarefas e mostrar como se fazia antes e como se faz agora:

1-  Obter o caminho de um arquivo a partir de uma string que contém o caminho e o nome do arquivo:

     ' obtem o caminho no  vb6
      nPos = InStrRev(TestePath, "\")
      sCaminhoCompleto = Mid(TestePath, 1, nPos - 1)
      MsgBox(sCaminhoCompleto)
      ' obtem o caminho no VB .NET
      sCaminhoCompleto = Path.GetDirectoryName(TestePath)
      MsgBox(sCaminhoCompleto)
 
VB 6 VB .NET

2-  Obter a extensão de um arquivo a partir de uma string que contém o caminho e o nome do arquivo:

     ' obtem extensão no  VB6
      nPos = InStrRev(TesteCaminho, ".")
      sExt = Mid(TesteCaminho, nPos)
      MsgBox(sExt)
 
      ' obtem extensão no VB .NET
      sExt = Path.GetExtension(TesteCaminho)
      MsgBox(sExt)
 
VB 6 VB .NET

3-  Obter o nome de um arquivo a partir de uma string que contém o caminho e o nome do arquivo:

      ' obtem nome do arquivo no  VB6
      nPos = InStrRev(TesteCaminho, "\")
      sNomeArquivo = Mid(TesteCaminho, nPos + 1)
      nPos = InStr(sNomeArquivo, ".")
      sNomeArquivo = Mid(sNomeArquivo, 1, nPos - 1)
      MsgBox(sNomeArquivo)

 
     ' obtem nome do arquivo no VB .NET
      sNomeArquivo = Path.GetFileNameWithoutExtension(TesteCaminho)
      MsgBox(sNomeArquivo)
 
VB 6 VB .NET

4-  Obter a raiz de um arquivo a partir de uma string que contém o caminho e o nome do arquivo:

 ' obtem a raiz do diretorio do caminho no VB6
      nPos = InStr(TesteCaminho, "\")
      sRaiz = Mid(TesteCaminho, 1, nPos)
      sRaiz = Mid(TesteCaminho, 1, InStr(TesteCaminho, "\"))
      MsgBox(sRaiz)

 
    ' obtem a raiz do diretorio do caminho no VB .NET
      sRaiz = Path.GetPathRoot(TesteCaminho)
      MsgBox(sRaiz)
 
VB 6 VB .NET

5-  Alterar a extensão de um arquivo a partir de uma string que contém o caminho e o nome do arquivo. No exemplo abaixo estou alterando a extensão de txt para xml.

     ' Substituindo a extensão de um arquivo no VB6
      Dim xmlExt As String
      nPos = InStrRev(TesteCaminho, ".")
      xmlExt = Mid(TesteCaminho, 1, nPos) & "xml"
      MsgBox(xmlExt)


 
     '' Substituindo a extensão de um arquivo no VB.NET
      xmlExt = Path.ChangeExtension(TesteCaminho, "xml")
      MsgBox(xmlExt)
 
VB 6 VB .NET

6-  Criar um arquivo com nome único para evitar conflitos com outros arquivos porventura já existentes.

      ' criando um arquivo de nome único no VB6.
      Dim sArqTemp As String
      Dim h As Integer
      h = FreeFile()

      
Do
        sArqTemp = "c:\Temp" & Format(Now, "HHmmss")
        
Try
            FileOpen(h,sArqTemp, OpenMode.Output, OpenAccess.Write)
        
Catch ex As Exception
        
End Try
         If IO.File.Exists(sFN) Then
            Exit Do
         End If
      Loop
      MsgBox(sArqTemp)

 
     '' criando um arquivo de nome único no VB.NET
      Dim sArqTemp As String = Path.GetTempFileName()
      MsgBox(sArqTemp)
 
VB 6 VB .NET

Existem muitos mais métodos a serem explorados e com certeza o resultado final será menos código necessário para realizar a mesma tarefa antes feita no VB 6.

Até o próximo artigo VB.NET .


José Carlos Macoratti