De origen y de Destino tienen el mismo subdirectorios como este :

c:\fs\source\a\

c:\fs\source\b\

c:\fs\target\a\

c:\fs\target\b\

Estoy luchando con la copia de archivos desde el origen hasta el destino si no los archivos existentes. ¿Cuál es la mejor manera en C# para comparar carpetas de origen con destino carpetas – compruebe si los archivos de destino no salir, copiar archivos de una fuente específica (c:\fs\source\a\config.xml y la app.config) a un objetivo específico (c:\fs\target\a\). Si los archivos existen, lo ignoran. Cómo escribir en C#?

Su ejemplo de código muy apreciada. Gracias!

    public void TargetFileCreate()
    {
        foreach (var folder in SourceFolders)
        {
            string[] _sourceFileEntries = Directory.GetFiles(folder);

            foreach (var fileName in _sourceFileEntries)
            {    //dont know how to implement here:
                 //how to compare source file to target file to check if files exist or not
                 //c:\fs\source\A\config.xml compares to c:\fs\target\A\ (no files) that should be pasted
                 //c:\fs\source\B\config.xml compares to c:\fs\target\B\config.xml that is already existed - no paste
            }
        }
    }
  • He tratado de buscar en ambos bucles (foreach) entre las carpetas de origen y de destino de las carpetas donde se puede comparar una carpeta específica y comprobar si esta carpeta no tiene archivos, copiar archivos desde el origen a esta carpeta. mi código parecer muy raro. me gustaría ver una mejor forma de codificación es….

3 Comentarios

  1. 2
    foreach (var file in Directory.GetFiles(source))
    {
        File.Copy(file, Path.Combine(target, Path.GetFileName(file)), false);
    }
    • trabajo como un encanto!! Gracias
  2. 1
    foreach (var file in Directory.GetFiles(source))
    {
       var targetFile = System.IO.Path.Combine(target, System.IO.Path.GetFileName(file));
       if(!File.Exists(targetFile))
       {
           File.Copy(file, targetFile)
       }
    }
  3. 0

    Usted puede comprobar para cada archivo, si existe, de esta manera:

    string curFile = @"c:\temp\test.txt";
    Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");

    poner esta dentro de su bucle. a continuación, copie los archivos de allí.

    DE CÓDIGO DE MSDN:

    //Simple synchronous file copy operations with no user interface. 
    //To run this sample, first create the following directories and files: 
    //C:\Users\Public\TestFolder 
    //C:\Users\Public\TestFolder\test.txt 
    //C:\Users\Public\TestFolder\SubDir\test.txt 
    public class SimpleFileCopy
    {
    static void Main()
    {
    string fileName = "test.txt";
    string sourcePath = @"C:\Users\Public\TestFolder";
    string targetPath =  @"C:\Users\Public\TestFolder\SubDir";
    //Use Path class to manipulate file and directory paths. 
    string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
    string destFile = System.IO.Path.Combine(targetPath, fileName);
    //To copy a folder's contents to a new location: 
    //Create a new target folder, if necessary. 
    if (!System.IO.Directory.Exists(targetPath))
    {
    System.IO.Directory.CreateDirectory(targetPath);
    }
    //To copy a file to another location and  
    //overwrite the destination file if it already exists.
    System.IO.File.Copy(sourceFile, destFile, true);
    //To copy all the files in one directory to another directory. 
    //Get the files in the source folder. (To recursively iterate through 
    //all subfolders under the current directory, see 
    //"How to: Iterate Through a Directory Tree.")
    //Note: Check for target path was performed previously 
    //      in this code example. 
    if (System.IO.Directory.Exists(sourcePath))
    {
    string[] files = System.IO.Directory.GetFiles(sourcePath);
    //Copy the files and overwrite destination files if they already exist. 
    foreach (string s in files)
    {
    //Use static Path methods to extract only the file name from the path.
    fileName = System.IO.Path.GetFileName(s);
    destFile = System.IO.Path.Combine(targetPath, fileName);
    System.IO.File.Copy(s, destFile, true);
    }
    }
    else
    {
    Console.WriteLine("Source path does not exist!");
    }
    //Keep console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();
    }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here