繁体   English   中英

如何使用C#将文件夹/目录复制到剪贴板

[英]How to copy a folder/directory to clipboard using c#

我正在创建一个基于C#Windows的应用程序,该应用程序基本上是Windows资源管理器模式。 用于将文件夹从一个地方复制和粘贴到另一个地方。 一切正常。 在我的应用程序中,我有两个分别具有树视图的窗口。 第一个是显示要复制文件位置的树状视图,第二个是要粘贴文件的树状视图。

使用以下代码,一切正常。 我在哪里获得要复制的所有文件。 所有这些文件都复制到剪贴板。

string[] files = Directory.GetFiles(txtPath.Text.ToString(), "*.*", SearchOption.TopDirectoryOnly);
//also tried using SearchOption.AllDirectories
if (files != null)
{
     IDataObject data = new DataObject(DataFormats.FileDrop, files);
     MemoryStream memo = new MemoryStream(4);
     byte[] bytes = new byte[] { (byte)(copy_cut ? 2 : 5), 0, 0, 0 };
     memo.Write(bytes, 0, bytes.Length);
     data.SetData("Preferred DropEffect", memo);
     Clipboard.SetDataObject(data);
}

并使用以下代码粘贴到相应的文件夹中

IDataObject data = Clipboard.GetDataObject();
if (!data.GetDataPresent(DataFormats.FileDrop))
     return;

     string[] files = (string[])data.GetData(DataFormats.FileDrop);
     MemoryStream stream = (MemoryStream)data.GetData("Preferred DropEffect", true);
     int flag = stream.ReadByte();
     if (flag != 2 && flag != 5)
         return;
     bool cut = (flag == 2);
     foreach (string file in files)
     {
         string dest = "C:" + "\\" + System.IO.Path.GetFileName(file);
         try
         {
             if (cut)
                File.Move(file, dest);
             else
                File.Copy(file, dest, false);
         }
         catch (IOException ex)
         {

         }
      }

一切对我来说都很好。 复制和粘贴效果很好。 但仅适用于没有任何子文件夹的文件夹。

如果我碰巧在一个文件夹中有很多文件夹,而每个文件夹有很多文件。 然后,以上代码无法正常工作。

例如。

如果文件夹A具有子文件夹X,Y,Z,并且每个子文件夹X,Y,Z具有多个文件,则当我复制到剪贴板并粘贴到所需位置时,我只会得到文件夹X,Y,Z的内容/文件而不是文件夹X,Y,Z本身。

有没有一种方法可以将文件夹X,Y,Z复制到剪贴板并粘贴到剪贴板。 就像我们在PC中进行的简单复制和粘贴一样,整个文件夹以及子文件夹都将粘贴到所需的位置。

与这个问题有关的帮助将不胜感激。

谢谢,

维肯什瓦尔

如果要复制并保持相同的结构完整,则必须创建一个递归函数。

Msdn有一个例子,您可以在这里找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM