[英]Files are not copied from source to destination in C#
我正在創建Windows窗體應用程序。我正在使用folderbrowser,textbox1,button。在Folder內部創建Folder和子文件夾。從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
{
}
}
正如我們在評論期間發現的那樣,您的問題似乎是您沒有得到文件夾列表。
要糾正此問題,必須將突擊隊從以下位置更改:
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%可以正常使用。 因此,我也將其更改為*,例如文件夾。 只是為了節省。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.