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()
获取该目录中的文件列表,然后将该路径中的文件复制到目标路径。如果你不想那样,为什么要这样做?这是你从其他答案/网站上找到的代码,但你真的不知道它是干什么的吗?您可以使用在每个列表框中找到的文件名复制文件,并使用该引用执行复制。使用