2

私はこれを次のようにファイルで簡単に行うことができます:

public static void MoveAllFilesFromDesktopToJDrive()
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\Tafe\Desktop\");
            DirectoryInfo Jdrive = new DirectoryInfo(@"J:\");

            foreach (FileInfo fi in di.GetFiles())
            {
                if (Path.GetFileName(fi.FullName) != "desktop.ini")
                {                      
                    fi.MoveTo(Jdrive.FullName + Path.GetFileName(fi.FullName));
                }    
            }
        }

しかし、ディレクトリで同じ操作を試みると、ボリューム間でディレクトリを移動できないことがわかります。では、これが私が試したことです。

 public static void MoveAllDirsFromDeskTopToJDrive()
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\Tafe\Desktop\");
            DirectoryInfo Jdrive = new DirectoryInfo(@"J:\");

            foreach (DirectoryInfo dirs in di.GetDirectories())
            {
               Directory.CreateDirectory(Jdrive + Path.GetFileName(dirs.FullName)); 

            }
        }

これにより、ファイルの名前はコピーされますが、コンテンツはコピーされません。メソッドで行ったようにコンテンツを移動するだけですMoveAllFilesFromDesktopToJDrive()が、ディレクトリにはサブディレクトリやサブディレクトリなどが含まれているため、わかりません。私は再帰について少し知っていますが、これを試みるには十分ではありません。また、そんなに難しいことはありませんか?これを容易にするために、APIにはもっと良いものが必要ですか?そうでなければ、この方法を完了するための助けMoveAllFilesFromDesktopToJDrive()は命の恩人になるでしょう!

4

1 に答える 1

0

コード内のどこかでこれをループしてみてください。

    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);
    }

    System.IO.File.Copy(sourceFile, destFile, true);

詳細については、次のリンクにアクセスしてください:http: //msdn.microsoft.com/en-us/library/cc148994.aspx

于 2012-11-05T04:32:38.153 に答える