惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Y
Y Combinator Blog
博客园_首页
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
B
Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
WordPress大学
WordPress大学
L
LangChain Blog
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Help Net Security

博客园 - 章立民研究室

我在點部落 笑談我的學習之路 下一代网页开发技术Silverlight——笑谈程式人生系列讲座之二 确保您的Silverlight 1.0运行时间组件是最新版本 ToolkitScriptManager VS ScriptManager 读者问与答 如何于撰写 Silverlight 1.0 的XAML时拥有Intellisense Silverlight 1.0 RC SDK 预览 新世代网站开发技术ASP .NET AJAX——章立民北京研讨会 PPT下载 新世代网站开发技术ASP .NET AJAX——章立民北京研讨会邀请函 读者询问是否一定要安装ASP.NET AJAX Extensions 答读者问 SQL Server - 请问数据库字段加密问题 读者“翔”询问如何于asp.net中删除目录 读者问与答 答读者问 Visual C# - 读者询问如何复制目录以及目录下所有的子目录与文件 新书出版了 SQL Server 2005 - 如何利用CLR存储过程读取与写入二进制影像数据
Visual C# 2005 – 如何使用通配符 *.* 复制所有文件
章立民研究室 · 2007-03-05 · via 博客园 - 章立民研究室

原发问问题:老师:你好,新年快乐.
IO与数据存取密诀里有提到文件复制及移动目录.
但如何使用以前*.*的通配符来复制所有文件? 谢谢.请帮忙解答解答:亲爱的读者您好很感谢您对于章立民研究室的支持
有关于您提到的问题
回复如下

 

图表1


如图表1所示,程序范例示范如何利用通配符 *,来复制数据夹内符合条件的所有文件,请特别注意我们是如何比对数据夹内的文件名称,并执行文件复制的动作。兹将程序代码列示如下:private void btnCopyFolder_Click(object sender, EventArgs e)
{
 string[] temp;
 string tempStr;
 string[] fileNames;
 string sourceDir;
 string destinationDir;
 string mappingStr;
 
 try
 {
  sourceDir = textBox1.Text.Substring(0, textBox1.Text.LastIndexOf(@"\"));
  destinationDir = this.DestionFileTextBox.Text;
 
  // 取得用户输入的路径所代表目录之文件名称集合。
  temp = Directory.GetFiles(sourceDir);
 
  for(int i = 0;i < temp.Length;i++)
  {
   tempStr = temp[i].Substring(temp[i].LastIndexOf(@"\") + 1);
   temp[i] = tempStr;
  }
 
  mappingStr =
    textBox1.Text.Substring(textBox1.Text.LastIndexOf(@"\") + 1,
    textBox1.Text.Length - textBox1.Text.LastIndexOf(@"\") - 2);
 
  // 将数组排序。
  Array.Sort(temp, new CaseInsensitiveComparer());
  fileNames = temp;
 
  // 搜寻已排序之数组。
  int fileIndex =
    Array.BinarySearch(
    fileNames, mappingStr, new CaseInsensitiveComparer());
 
  if(fileIndex < 0)
  {
   fileIndex = ~fileIndex;
  }
 
  int matchIndex = 0;
 
  // 计算符合条件的笔数。
  while (fileIndex + matchIndex < fileNames.Length)
  {
   if(!(fileNames[fileIndex + matchIndex].StartsWith(
     mappingStr, StringComparison.CurrentCulture)))
   {
    break;
   }
  
   matchIndex += 1;
  }
 
  string[] returnArray = null;
 
  // 如果有找到符合条件的数据,
  // 则将数据复制到数组变量。
  if (matchIndex > 0)
  {
   returnArray = new string[matchIndex];
  
   Array.Copy(fileNames, fileIndex, returnArray, 0, matchIndex);
  
   for (int i = 0; i < returnArray.Length; i++)
   {
    File.Copy(
      sourceDir + @"\" + returnArray[i],
      destinationDir + @"\" + returnArray[i], true);
   }
  
   // 启动 Windows 文件总管。
   Process.Start("explorer.exe", this.DestionFileTextBox.Text);
  }
 }
 catch (Exception ex)
 {
  MessageBox.Show(ex.Message);
 }
}private void DirectoryBrowseButton_Click(object sender, EventArgs e)
{
 FolderBrowserDialog folderDialog = new FolderBrowserDialog();
 
 folderDialog.RootFolder = Environment.SpecialFolder.MyComputer; if (
  (folderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK))
 {
  this.DestionFileTextBox.Text = folderDialog.SelectedPath;
 }
}