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

推荐订阅源

AI
AI
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
V2EX - 技术
V2EX - 技术
博客园 - 【当耐特】
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
有赞技术团队
有赞技术团队
S
Schneier on Security
S
SegmentFault 最新的问题
Google Online Security Blog
Google Online Security Blog
H
Hacker News: Front Page
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
Project Zero
Project Zero
博客园 - 司徒正美
P
Privacy International News Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Jina AI
Jina AI
Security Latest
Security Latest
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
NISL@THU
NISL@THU
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity

博客园 - 章立民研究室

我在點部落 笑談我的學習之路 下一代网页开发技术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;
 }
}