none
copiar e Renomear arquivo que contenha caracters RRS feed

  • Pergunta

  • Olá galera...

    espero que possam me ajudar...

    Estou desenvolvendo uma aplicação, e estou com o seguinte problema: tenho que  conferir se o caminho de meus arquivos assim cm arquivos contenha caracteres especiais, se for so o caminho eu copio todos os arquivos renomeiando-os e removendo os caracteres, mas se for o caminho ou diretorio em questão copio os arquivos para uma pasta temporaria.

    alguem pode me ajudar?


    segunda-feira, 23 de março de 2015 16:57

Respostas

  • Está um pouco confuso de entender como nosso amigo Eduardo mencionou.

    Mas pelo que entendi, precisa verificar se for um diretório copiar seus arquivos, se for um arquivo copiar esse arquivo.

    Mas para todos os arquivos precisa ser removido os caracteres especiais.

    Se for isso fiz uma aplicação console testei e funcinou verifica se é de ajuda para você.

    static void Main(string[] args)
            {
    
                string fileName = "file1.txt";
                string sourcePath = @"B:\Temp";
                string targetPath = @"B:\Temp2";
    
                System.IO.FileAttributes attrD = System.IO.File.GetAttributes(sourcePath);
    
                if ((attrD & System.IO.FileAttributes.Directory) == System.IO.FileAttributes.Directory)
                {
                    Console.WriteLine("Its a directory");
                    CopiarArquivosDiretorio(sourcePath, targetPath);
                }
                else
                {
                    Console.WriteLine("Its a file");
                    CopiarArquivo(sourcePath, targetPath);
                }
    
                System.IO.FileAttributes attrF = System.IO.File.GetAttributes(System.IO.Path.Combine(sourcePath, fileName));
    
                if ((attrF & System.IO.FileAttributes.Directory) == System.IO.FileAttributes.Directory)
                {
                    Console.WriteLine("Its a directory");
                    CopiarArquivosDiretorio(sourcePath, targetPath);
                }
                else
                {
                    Console.WriteLine("Its a file");
                    CopiarArquivo(System.IO.Path.Combine(sourcePath, fileName), targetPath);
                }
    
                Console.ReadKey();
            }
    
            static void CopiarArquivosDiretorio(string sourcePath, string targetPath)
            {
                string[] files = System.IO.Directory.GetFiles(sourcePath);
    
                foreach (string s in files)
                    CopiarArquivo(s, targetPath);
            }
    
            static void CopiarArquivo(string sourceFile, string targetPath)
            {
                if (!System.IO.Directory.Exists(targetPath))
                    System.IO.Directory.CreateDirectory(targetPath);
    
                string fileName = System.Text.RegularExpressions.Regex.Replace(System.IO.Path.GetFileName(sourceFile), @"[^0-9a-zA-Z\.]+", ""); ;
                string destFile = System.IO.Path.Combine(targetPath, fileName); 
    
                System.IO.File.Copy(sourceFile, destFile, true);
                Console.WriteLine(destFile);
            }


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    sexta-feira, 3 de abril de 2015 11:08

Todas as Respostas

  • desculpe....

    retificando....

    se for só os ARQUIVOS eu copio todos os arquivos renomeando-os e removendo os caracteres, mas se for o caminho que contem ou diretorio em questão copio os arquivos para uma pasta temporária.

    alguem pode me ajudar?

    segunda-feira, 23 de março de 2015 17:08
  • kkkk

    esqueci de mencionar...

    não e o conteúdo dos arquivos e somente o nome do arquivos...

    desculpe!!!!!

    segunda-feira, 23 de março de 2015 17:11
  • Bom dia Juliander,

    Não consegui compreender seu problema. O nome dos seus arquivos não podem conter caracteres especiais? Você está tentando renomear esses arquivos? Os caracteres especiais não podem aparecer somente no caminho do arquivo? Nos de mais detalhes para que possamos ajuda-lo.

    Obrigado,

    Abraço!


    Eduardo Romero

    Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.

    sexta-feira, 3 de abril de 2015 09:59
    Moderador
  • Está um pouco confuso de entender como nosso amigo Eduardo mencionou.

    Mas pelo que entendi, precisa verificar se for um diretório copiar seus arquivos, se for um arquivo copiar esse arquivo.

    Mas para todos os arquivos precisa ser removido os caracteres especiais.

    Se for isso fiz uma aplicação console testei e funcinou verifica se é de ajuda para você.

    static void Main(string[] args)
            {
    
                string fileName = "file1.txt";
                string sourcePath = @"B:\Temp";
                string targetPath = @"B:\Temp2";
    
                System.IO.FileAttributes attrD = System.IO.File.GetAttributes(sourcePath);
    
                if ((attrD & System.IO.FileAttributes.Directory) == System.IO.FileAttributes.Directory)
                {
                    Console.WriteLine("Its a directory");
                    CopiarArquivosDiretorio(sourcePath, targetPath);
                }
                else
                {
                    Console.WriteLine("Its a file");
                    CopiarArquivo(sourcePath, targetPath);
                }
    
                System.IO.FileAttributes attrF = System.IO.File.GetAttributes(System.IO.Path.Combine(sourcePath, fileName));
    
                if ((attrF & System.IO.FileAttributes.Directory) == System.IO.FileAttributes.Directory)
                {
                    Console.WriteLine("Its a directory");
                    CopiarArquivosDiretorio(sourcePath, targetPath);
                }
                else
                {
                    Console.WriteLine("Its a file");
                    CopiarArquivo(System.IO.Path.Combine(sourcePath, fileName), targetPath);
                }
    
                Console.ReadKey();
            }
    
            static void CopiarArquivosDiretorio(string sourcePath, string targetPath)
            {
                string[] files = System.IO.Directory.GetFiles(sourcePath);
    
                foreach (string s in files)
                    CopiarArquivo(s, targetPath);
            }
    
            static void CopiarArquivo(string sourceFile, string targetPath)
            {
                if (!System.IO.Directory.Exists(targetPath))
                    System.IO.Directory.CreateDirectory(targetPath);
    
                string fileName = System.Text.RegularExpressions.Regex.Replace(System.IO.Path.GetFileName(sourceFile), @"[^0-9a-zA-Z\.]+", ""); ;
                string destFile = System.IO.Path.Combine(targetPath, fileName); 
    
                System.IO.File.Copy(sourceFile, destFile, true);
                Console.WriteLine(destFile);
            }


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    sexta-feira, 3 de abril de 2015 11:08