【问题标题】:Moving multiple files with openfiledialog使用 openfiledialog 移动多个文件
【发布时间】:2015-10-20 19:50:12
【问题描述】:

我正在尝试将多个文件移动到打开文件对话框中的另一个目录,同时保留文件名。我在处理多个文件时遇到了麻烦,并创建了一个字符串数组和一个 foreach 循环。下面是代码。我试图循环数组(i++ 等),但不断收到“找不到字符串 []”错误。基本上它对第一个文件没有问题,但它想继续将同一个文件移动到另一个目录。它不会向下移动所选文件的列表来移动它们。我尝试了“System.IO.File.Move”,结果相同。我意识到下面的这段代码是粗制滥造的。

string [] MoveFrom = openFileDialog1.FileNames;

string [] FileName = openFileDialog1.SafeFileNames;

string MoveTo = "C://Users//Kevin//Desktop//Archive";

        foreach (string files in MoveFrom)
                {
                  foreach (string files2 in FileName)
                    {
                      Directory.Move(MoveFrom, MoveTo + "//" + FileName)                                       
                     }
                 }

【问题讨论】:

  • 应该是 Directory.Move(files, MoveTo .... )

标签: c# openfiledialog


【解决方案1】:

这应该可行:

string MoveTo = "D:\\"; //Change to your path
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        foreach (string _file in openFileDialog1.FileNames)
        {
            FileInfo fi = new FileInfo(_file);
            File.Move(_file, Path.Combine(MoveTo, fi.Name));
        }
    }

【讨论】:

    【解决方案2】:

    首先,您必须将 openFileDialog 的属性Multiselect 设置为true。然后您将访问FileNames 属性。之后,您只能在 foreach 循环上使用来移动文件。

    关于异常:您尝试将数组 MoveFrom 传递给方法 Move()

    Directory.Move(MoveFrom, MoveTo + "//" + FileName)

    但是根据这个方法的syntax,必须有string变量:

    public static void Move(string sourceDirName, string destDirName)

    在 foreach 中你应该使用循环的变量。另外我更喜欢使用Path.Combine() 来防止使用'\' 和Path.GetFileName() 来获取带扩展名的文件名

    请尝试以下方法:

     openFileDialog1.Multiselect = true;
     if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
       string[] MoveFrom = openFileDialog1.FileNames;
       string MoveTo = "C://Users//Kevin//Desktop//Archive";
    
       foreach (string files in MoveFrom)
       {
            Directory.Move(files, Path.Combine(MoveTo, Path.GetFileName(files)));                                                     
       }
     }
    

    【讨论】:

    • 效果很好!谢谢。
    猜你喜欢
    • 2011-01-15
    • 2010-11-21
    • 2015-07-08
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多