我正在创建Windows表单应用程序。我正在使用folderbrowser,textbox1,button.I在Folder.From textbox1中创建文件夹和子文件夹,它正在选择特定文件夹。在我的if条件下,我选择在textbox1选择的特定文件夹我从目标文件夹中复制文件。我正在复制文件并将其存储在新创建的文件夹中作为目标文件夹(文件夹内的子文件夹)。它正在创建文件夹,子文件夹,但不会将文件从目标文件夹复制到目标文件夹。我不明白我的代码中有什么问题。
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDlg = new FolderBrowserDialog();
folderBrowserDlg.ShowNewFolderButton = true;
DialogResult dlgResult = folderBrowserDlg.ShowDialog();
if (dlgResult.Equals(DialogResult.OK))
{
textBox1.Text = folderBrowserDlg.SelectedPath;
Environment.SpecialFolder rootFolder = folderBrowserDlg.RootFolder;
}
}
private void button3_Click(object sender, EventArgs e)
{
d();
}
public void d()
{
string s = textBox1.Text;
string z=@"c:\Users\T\Documents\Visual Studio 2015\Projects\PlatG\PlGames\DATA\AMT8-P47\data\AMT8-P47";
string k=@"c:\Users\T\Documents\Visual Studio 2015\Projects\PlatG\PlGames\DATA\GDIV8-P89\data\GDIV8-P89";
string subFolderZ =@"C:\DATA";
if (!Directory.Exists(subFolderZ))
{
Directory.CreateDirectory(subFolderZ);
}
if(s==z)
{
string subFolderZ1 = Path.Combine(subFolderZ, "AMT8-P47");
if (!Directory.Exists(subFolderZ1))
{
Directory.CreateDirectory(subFolderZ1);
string[] dirs1d = Directory.GetDirectories(s, "*.*", SearchOption.AllDirectories);
foreach (var dir in dirs1d)
{
string destinationPath = @"C:\DATA\AMT8-P47";
string[] fileList = System.IO.Directory.GetFiles(dir, "*.*");
foreach (string file in fileList)
{
File.Copy(file, file.Replace(dir, destinationPath), true);
}
}
}
}
if(s==k)
{
string subFolderZ2 = Path.Combine(subFolderZ, "GDIV8-P89");
if (!Directory.Exists(subFolderZ2))
{
Directory.CreateDirectory(subFolderZ2);
// string p = textBox1.Text;
string[] dirs1dd = Directory.GetDirectories(s, "*.*",SearchOption.AllDirectories);
foreach (var dir in dirs1dd)
{
string destinationPath = @"C:\DATA\GDIV8-P89";
string[] fileList = System.IO.Directory.GetFiles(dir, "*.*");
foreach (string file in fileList)
{
File.Copy(file, file.Replace(dir, destinationPath), true);
}
}
}
}
else
{
}
}
答案 0 :(得分:0)
正如我们在评论中发现的那样,您的问题似乎是您没有获取文件夹列表。
要解决这个问题,必须改变突击队:
string[] dirs1d = Directory.GetDirectories(s, "*.*", SearchOption.AllDirectories);
为:
string[] dirs1d = Directory.GetDirectories(s, "*", SearchOption.AllDirectories);
此外,您当前的代码只会提供子目录的所有文件,但不会提供主目录本身的文件。为此你必须调整数组的大小(列表会更容易,但是数组仍然可以在那里管理。所以我将使用你现在拥有的数组)。并将主目录添加到列表中。
把它们放在一起:
string[] dirs1d = Directory.GetDirectories(s, "*", SearchOption.AllDirectories);
Array.Resize(ref dirs1d , dirs1d.Length + 1);
dirs1d[dirs1d.Length - 1] = s;
foreach....
获取文件需要注意的一点是:
string[] fileList = System.IO.Directory.GetFiles(dir, "*.*");
很好但是如果你有一个没有扩展名的文件我不是100%它的工作原理。因此我也会将此更改为*就像文件夹一样。只是为了保存一面。