Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件从列表框中的路径复制到特定文件夹_C# - Fatal编程技术网

C# 将文件从列表框中的路径复制到特定文件夹

C# 将文件从列表框中的路径复制到特定文件夹,c#,C#,我正在尝试复制从OpenFileDialog中选择的文件,并将其路径保存到列表框中 从列表框的路径,我希望它将其复制到特定文件夹中。 到目前为止,它正在将整个源文件夹复制到目标文件夹中 我的代码: private void button1_Click(object sender, EventArgs e) { System.IO.Stream myStream; OpenFileDialog thisDialog = new OpenFileDialog(); this

我正在尝试复制从
OpenFileDialog
中选择的文件,并将其路径保存到
列表框中
从
列表框的路径
,我希望它将其复制到特定文件夹中。
到目前为止,它正在将整个源文件夹复制到目标文件夹中

我的代码:

private void button1_Click(object sender, EventArgs e)
{
    System.IO.Stream myStream;
    OpenFileDialog thisDialog = new OpenFileDialog();

    thisDialog.InitialDirectory = "c:\\";
    thisDialog.Filter = "All files (*.*)|*.*";
    thisDialog.FilterIndex = 2;
    thisDialog.RestoreDirectory = true;
    thisDialog.Multiselect = true;
    thisDialog.Title = "Please Select Attachments!";

    if (thisDialog.ShowDialog() == DialogResult.OK)
    {
        foreach (String file in thisDialog.FileNames)
        {
            try
            {
                if ((myStream = thisDialog.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        listBox1.Items.Add(file);
                    }
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }
        }
    }
    else
    {
        //do nothing
    }
    //after selecting the files into the openfile dialog proceed to action the below.

    foreach (object item in listBox1.Items)
    {
        //MessageBox.Show(string.Format("{0}!", listBox1.ToString()));
        MessageBox.Show(item.ToString());
        string sourceFolder = item.ToString();
        string destinationFolder = @"c:\\testing";

        //DirectoryInfo directory = new DirectoryInfo(sourceFolder);
        DirectoryInfo directoryName = new DirectoryInfo( Path.GetDirectoryName(sourceFolder));

        FileInfo[] files = directoryName.GetFiles();
        foreach (var file in files)
        {
            string destinationPath = Path.Combine(destinationFolder, file.Name);
            File.Copy(file.FullName, destinationPath);
        }
    }
}

欢迎任何帮助。谢谢。

您正在读取整个源目录,读取的文件数量是您在文件选择器中选择的文件数量的两倍,但是您的
列表框中已经有了文件的完整路径,您可以简单地对其进行迭代并将其复制到目标,如:

string destinationFolder = @"c:\testing";
foreach (var item in listBox1.Items)
{
    string sourcePath = item.ToString();
    string fileName = Path.GetFileName(sourcePath);
    string destinationPath = Path.Combine(destinationFolder, fileName);
    File.Copy(sourcePath, destinationPath);
}

它正在将整个源文件夹粘贴到目标文件夹中。
换言之,您能解释一下,如果不是这样,您希望它做什么吗?如果从openfiledialog选择桌面上的文件。它正在复制桌面上找到的所有项目,并将其粘贴到目标文件夹中。i、 e.c:\\testing您正在使用所选文件的路径,然后调用
GetFiles()
获取该目录中的文件列表,然后将该路径中的文件复制到目标路径。如果你不想那样,为什么要这样做?这是你从其他答案/网站上找到的代码,但你真的不知道它是干什么的吗?您可以使用在每个
列表框中找到的文件名复制文件,并使用该引用执行复制。使用