C# - Analisando e Separando um Path em partes


 Hoje vou mostrar como podemos separar em partes os constituientes de um dado path (caminho) separando as partes em variáveis.

Talvez você ja precisou separar as partes constituintes de um caminho e colocá-las em diferentes variáveis.

Se nunca precisou, quem sabe um dia. Afinal na vida sempre a uma primeira vez para tudo.

O cenário é o seguinte:

Você precisa separar um caminho ou path em partes e colocar cada parte em uma variável.

Exemplo:  Para um caminho definido como: C:\teste\demo.txt você deseja obter o seguinte resultado:

  • raiz : C:\
  • nome do diretório : C:\teste
  • nome do arquivo : demo.txt
  • extensão do arquivo: txt
  • nome do arquivo sem extensão :  demo

Entendeu agora ?

Então vamos ao trabalho...

recursos usados:

  • Visual Studio 2017 Community

Criando o projeto Console

Crie um projeto do tipo Console App(.NET Framework) com o nome SepararPartes_Path.

A seguir crie um método chamado ExibePartesPath() com o código abaixo:

 public static void ExibePartesPath(string path)
 {
    if (string.IsNullOrWhiteSpace(path))
         throw new ArgumentNullException(nameof(path));
    string raiz = Path.GetPathRoot(path);
    string nomeDiretorio = Path.GetDirectoryName(path);
    string nomeArquivo = Path.GetFileName(path);
    string extensaoArquivo = Path.GetExtension(path);
    string nomeArquivoSemExtensao = Path.GetFileNameWithoutExtension(path);
    StringBuilder format = new StringBuilder();
    format.Append($"Analisando o path: {path} e separando-o nas seguintes partes :" + $"{Environment.NewLine}");
    format.Append($"\tRaiz: {raiz}{Environment.NewLine}");
    format.Append($"\tNome do diretório: {nomeDiretorio}{Environment.NewLine}");
    format.Append($"\tNome do arquivo  : {nomeArquivo}{Environment.NewLine}");
    format.Append($"\tExtensão do arquivo: {extensaoArquivo}{Environment.NewLine}");
    format.Append($"\tNome do arquivo sem extensão: {nomeArquivoSemExtensao}" + $"{Environment.NewLine}");
    Console.WriteLine(format.ToString());
 }
 

Note como é simples obter as partes do caminho usando a classe Path.

Essa classe contém métodos que podem ser usados para analisar um determinado caminho.

Existem cinco métodos principais usados para analisar um caminho:

  1. GetPathRoot - Retorna o diretório raiz do caminho. Se nenhuma raiz for fornecida no caminho,
    como quando um caminho relativo é usado, esse método retorna uma string vazia, não nula.
  2. GetDirectoryName - Retorna o caminho completo para o diretório que contém o arquivo.
  3. GetFileName - Retorna o nome do arquivo, incluindo a extensão do arquivo. Se nenhum nome de arquivo for
    no caminho, este método retorna uma string vazia, não nula.
  4. GetExtension - Retorna a extensão do arquivo. Se nenhuma extensão for fornecida para o arquivo ou não
    arquivo existe no caminho, este método retorna uma string vazia, não nula.
  5. GetFileNameWithoutExtension - Retorna o nome do arquivo raiz sem a extensão do arquivo

Cada um recebe um único parâmetro, path, que representa o caminho a ser analisado.

Observe que nenhum desses métodos verificam se os drivers, diretórios ou os arquivos existem no sistema de arquivos quando são executados mas lançaram uma exceção se caracteres ilegais foram encontrados na informação do caminho.

Para determina a existência de diretórios e arquivos use os métodos estáticos :  Directory.Exists e File.Exists

Definido o código abaixo como exemplo de uso:

      static void Main(string[] args)
        {
            string caminho = @"c:\cshp_fev_2019\SepararPartes_Path\SepararPartes_Path\SepararPartes_Path.exe";
            ExibePartesPath(caminho);
            Console.ReadLine();
        }

Iremos obter o seguinte resultado:

Pegue o projeto completo aqui :  SepararPartes_Path.zip

"Aquele que nem mesmo a seu próprio Filho poupou, antes o entregou por todos nós, como nos não dará também com ele todas as coisas ? "
Romanos 8:32

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

Referências:


José Carlos Macoratti