如果大家需要.留下email.我打包发给你们.
----------------------------------------------------------------------------------------------------------
我这里提供了几个查找的方法,通过线路号,通过录音时间,通过录音时长(未完成)
未完成的内个也是郁闷了我最久的..........
我所有的查帐根据都是语音文件的文件名,也就是说,后台的程序生成的是有特定格式的文件名的录音文件.我这里的格式是
// 2005-12-13-09-04-03-6
// y m d h m s 线路号
以下是按线路好查帐的页面代码和查找文件的类
页面---------aspx.cs文件
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace CTI.webs.Tapereg.ConditionSearch
{
/// <summary>
/// reLineNumber 的摘要说明。
/// </summary>
public class reLineNumber : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox savelineCode;
protected System.Web.UI.WebControls.Button lineSearch;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
CTI.Class.SearchFile sf=new CTI.Class.SearchFile();
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox Ml;
protected System.Web.UI.WebControls.Button mSearch;
protected CTI.UserControl.SoundFileList sfl;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
this.Label1.Text="";
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 -
不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.lineSearch.Click += new
System.EventHandler(this.lineSearch_Click);
this.mSearch.Click += new System.EventHandler(this.mSearch_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void lineSearch_Click(object sender, System.EventArgs e)
{
sfl.ContitonText=this.savelineCode.Text;
sfl.TypeCode=CTI.Class.SearchFile.SearchSort.LineNumberUnity.ToString();
sfl.SerachFiles();
#region
/*
object
obj=sf.GetFileAssemble(this.savelineCode.Text,CTI.Class.SearchFile.SearchSort.LineNumberUnity);
if(obj.GetType().ToString().Equals("System.String"))
{
this.Label1.Visible=true;
this.Label1.Text=obj.ToString();
}
else
{
if(obj.GetType().ToString().Equals("System.Int32"))
{
this.Label1.Visible=true;
sfl.Visible=false;
this.Label1.Text="没有找到符合条件[线路号"+this.savelineCode.Text+"]的文件";
}
else
{
this.Label1.Visible=false;
sfl.Visible=true;
sfl.Table=(DataTable)obj;
sfl.databinder();
}
}
*/
#endregion
}
private void mSearch_Click(object sender, System.EventArgs e)
{
if(this.Ml.Text.Length==0)
this.Label1.Text="请选择您要查询的线路号";
else
{
char[] ch=this.Ml.Text.ToCharArray();
sfl.ContitonText=ch;
sfl.TypeCode=CTI.Class.SearchFile.SearchSort.LineNumberMulti.ToString();
sfl.SerachFiles();
#region
/*
if(obj.GetType().ToString().Equals("System.String"))
{
this.Label1.Visible=true;
this.Label1.Text=obj.ToString();
}
else
{
if(obj.GetType().ToString().Equals("System.Int32"))
{
sfl.Visible=false;
this.Label1.Visible=true;
this.Label1.Text="没有找到符合条件[线路号码";
foreach(char c in ch)
this.Label1.Text+=c.ToString()+",";
this.Label1.Text+="]的文件";
}
else
{
this.Label1.Visible=false;
sfl.Visible=true;
sfl.Table=(DataTable)obj;
sfl.databinder();
}
}
*/
#endregion
}
}
}
}
类-------------------------------------
using System;
using System.IO;
using System.Text;
using System.Data;
using System.Web;
namespace CTI.Class
{
/// <summary>
/// SearchFile 的摘要说明。
/// </summary>
public class SearchFile
{
DataTable TempTable;
CTI.Class.operationXML operXML=new operationXML();
public SearchFile()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
object _filecondition;
/// <summary>
/// 条件
/// </summary>
object FileCondition
{
get
{
return _filecondition;
}
set
{
if(value.GetType().ToString().Equals("System.String"))
_filecondition=(string)value;
else if(value.GetType().ToString().Equals("System.Char[]"))
_filecondition=(System.Char[])value;
}
}
int _searchCode;
/// <summary>
/// 查询类型编号
/// </summary>
int SearchCode
{
get{return _searchCode;}
set{_searchCode=value;}
}
/// <summary>
/// 定义查询类别
/// </summary>
public enum SearchSort
{
/// <summary>
/// 按通话时间查询(精确)
/// </summary>
CommunicateTimeNicety=1,
/// <summary>
/// 按通话时间查询(模糊)
/// </summary>
CommunicateTimeBlurring,
/// <summary>
/// 按通话时长查询(精确)
/// </summary>
CommunicateTimeConfinesNicety,
/// <summary>
/// 按通话时长查询(模糊)
/// </summary>
CommunicateTimeConfinesBlurring,
/// <summary>
/// 按线路号查询(单个)
/// </summary>
LineNumberUnity,
/// <summary>
/// 按线路号查询(组合)
/// </summary>
LineNumberMulti
//待扩展
}
/// <summary>
/// 按指定条件查找录音文件
/// </summary>
/// <param name="condition">条件</param>
/// <param name="sort">类别</param>
/// <returns>以DateTable格式返回文件信息</returns>
public object GetFileAssemble(object condition,SearchSort sc)
{
using(TempTable=new DataTable("FileAssemble"))
{
this.TextureTable(sc.GetHashCode());
try
{
this.FileCondition=condition;
this.SearchCode=sc.GetHashCode();
//this.AssayCondition(condition,sc.GetHashCode());
this.SearchDirectory(operXML.SoundFilePath());
if(TempTable.Rows.Count==0)
return 0;
else
return this.TempTable;
}
catch(System.IO.IOException)
{
return "I/O错误";
}
catch(System.Security.SecurityException)
{
return "没有访问权限";
}
finally
{
}
}
}
/// <summary>
/// 分析条件
/// </summary>
/// <param name="Searchsort"></param>
private void AssayCondition(string condition,int Searchsort)
{
// switch(Searchsort)
// {
//
// }
}
/// <summary>
/// 遍历目录
/// </summary>
/// <param name="path">path</param>
private void SearchDirectory(string path)
{
string[] files=Directory.GetFiles(path);
foreach(string file in files)
{
AllotMethod(file);
}
string[] childDir=Directory.GetDirectories(path);
foreach(string subDir in childDir)
{
SearchChildDirectory(subDir);
}
}
/// <summary>
/// 遍历子目录
/// </summary>
/// <param name="path"></param>
private void SearchChildDirectory(string path)
{
string[] dir=Directory.GetDirectories(path);
foreach(string Child in dir)
{
string[] files=Directory.GetFiles(Child);
foreach(string file in files)
{
AllotMethod(file);
}
SearchChildDirectory(Child);
}
}
/// <summary>
/// 根据查询类别编号分配方法
/// <param name="filename">文件名</param>
/// </summary>
private void AllotMethod(string filename)
{
switch(this.SearchCode)
{
case 1:
this.CheckFile_CommunicateTime_nicety(filename);
break;
case 2:
this.CheckFile_CommunicateTime_blurring(filename);
break;
case 3:
this.CheckFile_CommunicateTimeConfines_nicety(filename);
break;
case 4:
this.CheckFile_CommunicateTimeConfines_blurring(filename);
break;
case 5:
this.CheckFile_LineNumber_unity(filename);
break;
case 6:
this.CheckFile_LineNumber_multi(filename);
break;
//待扩展
default:
break;
}
}
/// <summary>
/// 构造表
/// </summary>
private void TextureTable(int Searchsort)
{
switch(Searchsort)
{
case 1://SearchSort.CommunicateTime
case 2:
TempTable.Columns.Add("录音时间",System.Type.GetType("System.String"));
TempTable.Columns.Add("线路号",System.Type.GetType("System.String"));
TempTable.Columns.Add("播放时长",System.Type.GetType("System.String"));
TempTable.Columns.Add("文件大小",System.Type.GetType("System.String"));
TempTable.Columns.Add("路径",System.Type.GetType("System.String"));
break;
case 3://SearchSort.CommunicateTimeConfines
case 4:
TempTable.Columns.Add("通话时长",System.Type.GetType("System.String"));
TempTable.Columns.Add("录音时间",System.Type.GetType("System.String"));
TempTable.Columns.Add("线路号",System.Type.GetType("System.String"));
TempTable.Columns.Add("文件大小",System.Type.GetType("System.String"));
TempTable.Columns.Add("路径",System.Type.GetType("System.String"));
break;
case 5://SearchSort.LineNumber
case 6:
TempTable.Columns.Add("线路号",System.Type.GetType("System.String"));
TempTable.Columns.Add("录音时间",System.Type.GetType("System.String"));
TempTable.Columns.Add("通话时长",System.Type.GetType("System.String"));
TempTable.Columns.Add("文件大小",System.Type.GetType("System.String"));
TempTable.Columns.Add("路径",System.Type.GetType("System.String"));
break;
//待扩展
default:
break;
}
}
/// <summary>
/// add row to the table
/// </summary>
private void AddRow(string str1,string str2,string str3,string
str4,string str5)
{
TempTable.Rows.Add(new string[]{str1,str2,str3,str4,str5});
}
#region 核对文件,判断是否和条件匹配
/*
* l 文件大小
* code 线路号
* time 播放时长
* f.CreationTime 录音时间
*/
///----------------------------------------------------------------------------
/// <summary>
/// 按照录音时间核对(精确)
/// </summary>
/// <param name="filename"></param>
/// 录音时间-线路号-播放时长-文件大小
private void CheckFile_CommunicateTime_nicety(string filename)
{
FileInfo f=new FileInfo(filename);
if(f.CreationTime.ToString().Equals(this.FileCondition))
{
long l=(f.Length/1024);
char[] code=f.Name.ToCharArray();
float time=f.Length/(16*1024);
this.AddRow(f.CreationTime.ToString(),code[20].ToString(),time.ToString(),l.ToString()+"KB",filename);
}
}
///----------------------------------------------------------------------------
/// <summary>
/// 按照录音时间核对(模糊)
/// </summary>
/// <param name="filename"></param>
/// 录音时间-线路号-播放时长-文件大小
private void CheckFile_CommunicateTime_blurring(string filename)
{}
///----------------------------------------------------------------------------
/// <summary>
/// 按照通话时长核对(精确)
/// </summary>
/// <param name="filename"></param>
/// 通话时长-录音时间-线路号-文件大小
private void CheckFile_CommunicateTimeConfines_nicety(string
filename)
{
FileInfo f=new FileInfo(filename);
char[] c=this.FileCondition.ToString().ToCharArray();
float time=f.Length/(16*1024);
float fl=float.Parse(this.FileCondition.ToString().Remove(0,1));
switch(c[0].ToString())
{
case "0"://=
if(time==fl)this.CheckFile_CommunicateTimeConfines_nicety_AddTable(f);
break;
case "1"://<
if(time<fl)this.CheckFile_CommunicateTimeConfines_nicety_AddTable(f);
break;
case "2"://>
if(time>fl)this.CheckFile_CommunicateTimeConfines_nicety_AddTable(f);
break;
case "3"://≤
if(time<=fl)this.CheckFile_CommunicateTimeConfines_nicety_AddTable(f);
break;
case "4"://≥
if(time>=fl)this.CheckFile_CommunicateTimeConfines_nicety_AddTable(f);
break;
case "5"://≠
if(time!=fl)this.CheckFile_CommunicateTimeConfines_nicety_AddTable(f);
break;
default:
break;
}
}
///----------------------------------------------------------------------------
/// <summary>
/// 按照通话时长核对(精确)_加入内存表方法
/// </summary>
/// <param name="filename"></param>
/// 通话时长-录音时间-线路号-文件大小
private void
CheckFile_CommunicateTimeConfines_nicety_AddTable(FileInfo f)
{
long l=(f.Length/1024);
char[] code=f.Name.ToCharArray();
float time=f.Length/(16*1024);
this.AddRow(time.ToString(),f.CreationTime.ToString(),code[20].ToString(),l.ToString()+"KB",f.FullName);
}
///----------------------------------------------------------------------------
/// <summary>
/// 按照通话时长核对(模糊)
/// </summary>
/// <param name="filename"></param>
/// 通话时长-录音时间-线路号-文件大小
private void CheckFile_CommunicateTimeConfines_blurring(string
filename)
{}
///----------------------------------------------------------------------------
/// <summary>
/// 按照线路号查询(单一)
/// </summary>
/// <param name="filename"></param>
/// 线路号-录音时间-通话时长-文件大小
private void CheckFile_LineNumber_unity(string filename)
{
FileInfo f=new FileInfo(filename);
char[] code=f.Name.ToCharArray();
if(code[20].ToString().Equals(this.FileCondition))
{
long l=(f.Length/1024);
float time=f.Length/(16*1024);
this.AddRow(code[20].ToString(),f.CreationTime.ToString(),time.ToString(),l.ToString()+"KB",filename);
}
}
///----------------------------------------------------------------------------
/// <summary>
/// 按照线路号查询(组合)
/// </summary>
/// <param name="filename"></param>
/// 线路号-录音时间-通话时长-文件大小
private void CheckFile_LineNumber_multi(string filename)
{
FileInfo f=new FileInfo(filename);
char[] code=f.Name.ToCharArray();
char[] temp=(char[])this.FileCondition;
char c=code[20];
foreach(char t in temp)
{
if(c.Equals(t))
{
long l=(f.Length/1024);
float time=f.Length/(16*1024);
this.AddRow(c.ToString(),f.CreationTime.ToString(),time.ToString(),l.ToString()+"KB",filename);
}
}
}
#endregion
}
}
其实做其他格式的查找也是如此...........
过短时间我加以改进下,应该可以实现全部格式的文件扫描````
啊``````我又在乱想了``````````哈哈``````
期待指教`````^_^