none
Caminhos de um ficheiro em c# RRS feed

  • Pergunta

  • Bom dia.  
    O meu problema é o seguinte: 

    Tenho numa base de dados guardadas as versões de trabalho de uma aplicação. 

    dataBaseUpdate.Path = C:\Users\anacarvalho\Desktop\Files20170608\ExportFilesSql\2017\2017_02\20170228_HM. 
    filesSql.FilePath= 20170228_HM\1_CREATE_TABLE_BMTWorkstation.sql.

    O que eu preciso é que no código em c#, leia todos os ficheiros daquela pasta, e me guarde o caminho a que aquele ficheiro pertence. Fiz assim : 

    fbd.SelectedPath = "C:\\Users\\anacarvalho\\Desktop"

    string folder = new DirectoryInfo(dataBaseUpdate.Path).Name; string added = filesSql.FilePath.Replace(folder, "").TrimStart(new[] { '\\' }); string pathTeste = Path.Combine(folder, added); string finalFile = Path.Combine(fbd.SelectedPath, folder, added);

    Neste caso assim : 

    "C:\\Users\\anacarvalho\\Desktop\\2017\2017_02\20170228_HM\1_CREATE_TABLE_BMTWorkstation.sql. 

    Alguém me pode ajudar ?

    terça-feira, 13 de junho de 2017 12:19

Respostas

  • Você pode usar a classe Directory, que contém um método estático chamado GetFiles(), que retorna um string[] com o caminho, nome e extensão de cada arquivo encontrado em uma pasta.

    using System.IO;
    
    public static void Main(string[] args)
    {
        string dirPath;
        string[] dirFiles;
    
        Console.Write("Informe o caminho da pasta que deseja escanear: ");
        dirPath = Console.ReadLine();
        dirFiles = Directory.GetFiles(dirPath);
        Console.WriteLine("\n == Arquivos na pasta {0} ==\n", Path.GetFileName(dirPath));
    
        for (int i = 0; i < dirFiles.Length; i++)
        {
            Console.WriteLine(Path.GetFileNameWithoutExtension(dirFiles[i]));
        }
    
        Console.ReadLine();
    }

    Se você quiser mais informações à respeito da pasta, use a classe DirectoryInfo. Para informações à respeito dos arquivos, use a classe FileInfo.

    private static void Main(string[] args)
    {
        DirectoryInfo dirInfo;
        string dirPath;
    
        Console.Write("Digite o caminho ate a pasta desejada: ");
        dirPath = Console.ReadLine();
        dirInfo = new DirectoryInfo(dirPath);
    
        Console.WriteLine("Pasta: {0}", dirInfo.Name);
        Console.WriteLine("Pasta Pai: {0}", dirInfo.Parent.Name);
        Console.WriteLine("Caminho: {0}", dirInfo.FullName);
        Console.WriteLine("Criada em: {0}", dirInfo.CreationTime.ToString());
        Console.WriteLine("Ultimo Acesso: {0}", dirInfo.LastAccessTime.ToString());
    
        Console.ReadLine();
    }

    Era isso que precisava?

    • Marcado como Resposta AnaLuisaCarvalho terça-feira, 13 de junho de 2017 15:54
    terça-feira, 13 de junho de 2017 13:54

Todas as Respostas

  • Você pode usar a classe Directory, que contém um método estático chamado GetFiles(), que retorna um string[] com o caminho, nome e extensão de cada arquivo encontrado em uma pasta.

    using System.IO;
    
    public static void Main(string[] args)
    {
        string dirPath;
        string[] dirFiles;
    
        Console.Write("Informe o caminho da pasta que deseja escanear: ");
        dirPath = Console.ReadLine();
        dirFiles = Directory.GetFiles(dirPath);
        Console.WriteLine("\n == Arquivos na pasta {0} ==\n", Path.GetFileName(dirPath));
    
        for (int i = 0; i < dirFiles.Length; i++)
        {
            Console.WriteLine(Path.GetFileNameWithoutExtension(dirFiles[i]));
        }
    
        Console.ReadLine();
    }

    Se você quiser mais informações à respeito da pasta, use a classe DirectoryInfo. Para informações à respeito dos arquivos, use a classe FileInfo.

    private static void Main(string[] args)
    {
        DirectoryInfo dirInfo;
        string dirPath;
    
        Console.Write("Digite o caminho ate a pasta desejada: ");
        dirPath = Console.ReadLine();
        dirInfo = new DirectoryInfo(dirPath);
    
        Console.WriteLine("Pasta: {0}", dirInfo.Name);
        Console.WriteLine("Pasta Pai: {0}", dirInfo.Parent.Name);
        Console.WriteLine("Caminho: {0}", dirInfo.FullName);
        Console.WriteLine("Criada em: {0}", dirInfo.CreationTime.ToString());
        Console.WriteLine("Ultimo Acesso: {0}", dirInfo.LastAccessTime.ToString());
    
        Console.ReadLine();
    }

    Era isso que precisava?

    • Marcado como Resposta AnaLuisaCarvalho terça-feira, 13 de junho de 2017 15:54
    terça-feira, 13 de junho de 2017 13:54
  • Sim também pode ser desse jeito, mas tem que ser de outra forma. 
    Basicamente eu tenho sempre esta pasta por defeito selecionada

    C:\\ByMe\\SOLUTIONS\\Dictation1\\Database\\Updates\\

    E depois para a frente posso ter outras coisas. Tipo isto : 

    C:\\ByMe\\SOLUTIONS\\Dictation1\\Database\\Updates\\2017\\2017_02\\20170228_HM

    O meu objectivo é apenas guardar o que está para a frente do Updates. 

    Isto : 2017\\2017_02\\20170228_HM

    Só nao estou a conseguir fazer. 

    terça-feira, 13 de junho de 2017 14:56
  • Já consegui resolver. O meu erro era no código. 

      string folder = new DirectoryInfo(GetAppSettingsDataBaseUpdate().StorePath).Name;
    string added = fdlg.FileName.Replace(GetAppSettingsDataBaseUpdate().StorePath, "").TrimStart(new[] { '\\' });

    Era simplesmente o que colocar entre ().

    terça-feira, 13 de junho de 2017 15:56