Avatar billede conehead Nybegynder
06. maj 2005 - 12:21 Der er 3 kommentarer og
1 løsning

At flytte et bibliotek

Jeg vil flytte et bibliotek fra c: til d:
Jeg har forsøgt mig med Directory.Move, men den tillader ikke flytning på tværs af drev.

Skal jeg virkelig til at genoprette alle biblioteker og kopiere alle filer enkeltvist?
Avatar billede nielle Nybegynder
06. maj 2005 - 13:02 #1
Tja, det lader unægtligt til at der er den underlige begrænsning. Så her er en udvidelse til DirectoryInfo:

public class XDirectoryInfo // : DirectoryInfo - desværre kan vi ikke nedarve da MS har erklæret DirectoryInfo som sealed...
{
    DirectoryInfo SourceDI;  // ...så derfor må vi lave det som en wrapper i stedet.
    string destinationDirRoot = "";

    public XDirectoryInfo(string path)
    {
        SourceDI = new DirectoryInfo(path);
    }

    public void MoveTo(string destDirName)
    {
        destinationDirRoot = destDirName;

        if (Path.GetPathRoot(SourceDI.FullName) == Path.GetPathRoot(destDirName))
            SourceDI.MoveTo(destDirName);
        else
            ProcessDI(SourceDI);
    }

    private void ProcessDI(DirectoryInfo DI)
    {
        string SourceFullName = DI.FullName;
        string TargetFullName = SourceFullName.Replace(SourceDI.FullName, destinationDirRoot);

        if (!Directory.Exists(TargetFullName)) Directory.CreateDirectory(TargetFullName);

        foreach (DirectoryInfo SubDI in DI.GetDirectories())
            ProcessDI(SubDI);

        foreach (FileInfo FI in DI.GetFiles()) ProcessFI(FI);

        DI.Delete();
    }

    private void ProcessFI(FileInfo FI)
    {
        string SourceFullName = FI.FullName;
        string TargetFullName = SourceFullName.Replace(SourceDI.FullName, destinationDirRoot);

        FI.MoveTo(TargetFullName);
    }
}
Avatar billede nielle Nybegynder
06. maj 2005 - 13:03 #2
Bruges sådan her:

XDirectoryInfo DI = new XDirectoryInfo(@"C:\Windows");
DI.MoveTo(@"D:\UpsDetVarIkkeSåFedt");
Avatar billede conehead Nybegynder
06. maj 2005 - 13:48 #3
jo tak...det var lige det jeg skulle bruge. Svar for point
Avatar billede nielle Nybegynder
06. maj 2005 - 14:36 #4
Ok :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester