-2
namespace FileMove2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Which folder would you like to move files from?");
            string sourcePath = Console.ReadLine();
            Console.Write("Which folder would you like to move files to?");
            string targetPath = Console.ReadLine();

            MoveDirectory(sourcePath, targetPath);
        }
                static void MoveDirectory(string sourcePath, string targetPath)

            { 
                if (!System.IO.Directory.Exists(targetPath))
                {
                    System.IO.Directory.CreateDirectory(targetPath);
                }

                if (System.IO.Directory.Exists(sourcePath))
                {
                    string[] files = System.IO.Directory.GetFiles(sourcePath, "*.*", System.IO.SearchOption.AllDirectories);

                    foreach (string f in files)
                    {
                        System.IO.File.Move(f, targetPath);
                    }
                }
            }
    }
}
4

2 回答 2

1

你应该这样做:

System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private");

您的 sourcePath 是第一个参数,而 targetPath 是第二个相应的参数。

参考资料: 微软 MSDN

于 2014-03-20T19:53:24.670 回答
1

问题是File.Move需要两个文件名,而您提供的是文件名和目录。

您可以通过创建适当的目标文件名来修复您的代码:

string targetFile = Path.Combine(targetPath, Path.GetFileName(f));
File.Move(f, targetFile);

(正如 João Pinho 所说,Directory.Move可能会做你想做的事,但上面解释了为什么你会得到一个错误,如果你的实际情况更复杂,这会有所帮助。)

于 2014-03-20T19:54:20.357 回答