Finns det nåt smidigt sätt att kopiera en katalog i C# ?
De lösningar som jag vet finns är att köra en rekursiv variant och kopiera varje fil för sig, sen finns ju också ManagementObject. Ingen av dom är helt smidiga... finns det nåt bättre sätt?
Verkar vara mer fipplande med det än med ManagementObject så jag kör på det istället.. tack för tipset iaf :)
using System;
using System.Management;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.IO;
class DirectoryOperations
{
/// <summary>
/// Copy a directory with all its content to another directory
/// </summary>
/// <param name="inputFolder">The directory to copy</param>
/// <param name="outputFolder">The directory to be created (shall not exist before copying)</param>
/// <returns>
/// (found the different values by testing.. possibly incorrect/incomplete)
/// 0 - everything went ok
/// 9 - output folder same as input
/// 10 - output folder already exists (will not overwrite)
///</returns>
public static int Copy(string inputFolder, string outputFolder)
{
string input = "'" + inputFolder + "'";
string output = outputFolder;
string path = "Win32_Directory.Name=" + input;
ManagementObject mo = new ManagementObject(path);
ManagementBaseObject inpar = mo.GetMethodParameters("Copy");
inpar["FileName"] = output;
ManagementBaseObject outpar = mo.InvokeMethod("Copy", inpar, null);
int returnValue = Convert.ToInt32(outpar.Properties["ReturnValue"].Value);
mo.Dispose();
return returnValue;
}
public static void Main(string[] args)
{
int r = DirectoryOperations.Copy(@"c:\foo", @"c:\bar");
Console.WriteLine ("return = "+r);
}
}
250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2