【发布时间】:2011-03-23 19:32:27
【问题描述】:
背景:我正在使用带有 OpenFileDialog 和 FileBrowserDialog 的 C# 开发 WinForms 应用程序,它将 1)在指定源目录的文件名中搜索特定字符串 2)将文件复制到合并目录 3)从 excel 转换多个文件到 csv 文件,然后 3) 使用命令行可执行文件将所有生成的 csv 文件转换为 1 个大 csv 文件
示例:MSDN 提供了一个代码示例,列出了“c:\”中所有以字母“c”开头的目录和文件。在http://msdn.microsoft.com/en-us/library/ms143448.aspx,所以我的代码基于此...
问题:代码不会将任何文件复制到合并文件夹中,因此我很确定搜索不起作用。
我应该在这里改变什么?它不起作用:
string files = "*.xlsx";
void DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d, files))
{
// Is this the file we are looking for?
// check excel files for corp name in the filename.
if (f.Contains(m_sc.get_Corp()))
{
// check if thread is cancelled
if (m_EventStop.WaitOne(0, true))
{
// clean-up operations may be placed here
// ...
// inform main thread that this thread stopped
m_EventStopped.Set();
return;
}
else
{
string path = sDir;
string searchPattern = m_sc.get_Corp();
// A file has been found in this directory
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] directories = di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);
foreach (FileInfo file in files)
{
try
{
// Copy each selected xlsx files into the specified TargetFolder
System.IO.File.Copy(FileName, consolidatedFolder + @"\" + System.IO.Path.GetFileName(FileName));
Log("File" + FileName + " has been copied to " + consolidatedFolder + @"\" + System.IO.Path.GetFileName(sourceFileOpenFileDialog.FileName));
// Convert each selected XLSX File to CSV Using the command prompt code...
}
}
}
}
【问题讨论】:
-
@JoshM,我删除了一半的其他代码,这样代码更容易分析。该代码不会将任何文件复制到合并文件夹中,因此我很确定搜索不起作用。
-
你调试了吗?这将是查看搜索是否返回任何内容的第一步......
-
你有 foreach (FileInfo file in files) 这意味着 files 是 FileInfo 类型,但是你有 string files = ".xlsx" 或者是一个错字
-
需要更多信息。如果完全出错,你会得到什么错误。什么是行不通的,代码在哪里?此外,您不需要两个循环并递归调用 DirSearch 方法。而是使用: string[] filesNames = Directory.GetFiles(sDir, files, SearchOption.AllDirectories); foreach(文件名中的字符串 d){
标签: c# winforms search process