提取目录下的文件
提取directoryPath目录下的所有文件.包括该目录下的文件,以及该目录下的子目录下的文件,等。
其中 this.tableArr 为ArrayList, DynamicTable 为一detail类.
其中 this.tableArr 为ArrayList, DynamicTable 为一detail类.
/***提取文件***/#region /***提取文件***/
public void GetDrive(string directoryPath)
{
try
{
DirectoryInfo info = new DirectoryInfo(directoryPath);
if (info.Exists)
{
//提取文件
FillFileList(info);
//循环提取子目录下的所有文件
GetDirectories(info.GetDirectories());
}
}
catch (Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"提取目录",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
/**//// <summary>
/// 循环提取子目录下的所有文件
/// </summary>
/// <param name="subDirs">DirectoryInfo[]</param>
private void GetDirectories(DirectoryInfo[] subDirs)
{
DirectoryInfo[] subSubDirs;
try
{
foreach (DirectoryInfo subDir in subDirs)
{
FillFileList(subDir);
subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories(subSubDirs);
}
}
}
catch (Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"提取子目录",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
/**//// <summary>
/// 根据DirectoryInfo对象填充文件列表
/// </summary>
/// <param name="dirObj"></param>
/// <returns></returns>
private bool FillFileList(DirectoryInfo dirObj)
{
if(dirObj == null)
return false;
FileInfo[] files;
try
{
files = dirObj.GetFiles();
}
catch(IOException ex)
{
MessageBox.Show("请将磁盘或光盘插入驱动器"+dirObj.Name+"中。系统提示:"+ex.Message);
return false;
}
catch(Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"提取文件",MessageBoxButtons.OK,MessageBoxIcon.Information);
return false;
}
try
{
foreach(FileInfo tmpfile in files)
{
arrCount++;
DynamicTable dtClass=new DynamicTable();
dtClass.ID=arrCount;
dtClass.FileName=tmpfile.Name;
string fullPath=tmpfile.FullName;
fullPath=fullPath.Trim();
//提取相对路径
dtClass.RelativePath=GetRelativePath(fullPath);
……
this.tableArr.Add(dtClass);
}
return true;
}
catch (Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"构造表格类",MessageBoxButtons.OK,MessageBoxIcon.Information);
return false;
}
}
#endregion
public void GetDrive(string directoryPath)
{
try
{
DirectoryInfo info = new DirectoryInfo(directoryPath);
if (info.Exists)
{
//提取文件
FillFileList(info);
//循环提取子目录下的所有文件
GetDirectories(info.GetDirectories());
}
}
catch (Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"提取目录",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
/**//// <summary>
/// 循环提取子目录下的所有文件
/// </summary>
/// <param name="subDirs">DirectoryInfo[]</param>
private void GetDirectories(DirectoryInfo[] subDirs)
{
DirectoryInfo[] subSubDirs;
try
{
foreach (DirectoryInfo subDir in subDirs)
{
FillFileList(subDir);
subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories(subSubDirs);
}
}
}
catch (Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"提取子目录",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
/**//// <summary>
/// 根据DirectoryInfo对象填充文件列表
/// </summary>
/// <param name="dirObj"></param>
/// <returns></returns>
private bool FillFileList(DirectoryInfo dirObj)
{
if(dirObj == null)
return false;
FileInfo[] files;
try
{
files = dirObj.GetFiles();
}
catch(IOException ex)
{
MessageBox.Show("请将磁盘或光盘插入驱动器"+dirObj.Name+"中。系统提示:"+ex.Message);
return false;
}
catch(Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"提取文件",MessageBoxButtons.OK,MessageBoxIcon.Information);
return false;
}
try
{
foreach(FileInfo tmpfile in files)
{
arrCount++;
DynamicTable dtClass=new DynamicTable();
dtClass.ID=arrCount;
dtClass.FileName=tmpfile.Name;
string fullPath=tmpfile.FullName;
fullPath=fullPath.Trim();
//提取相对路径
dtClass.RelativePath=GetRelativePath(fullPath);
……
this.tableArr.Add(dtClass);
}
return true;
}
catch (Exception err)
{
MessageBox.Show(this,err.Message.ToString(),"构造表格类",MessageBoxButtons.OK,MessageBoxIcon.Information);
return false;
}
}
#endregion