您的位置:首页 > 编程语言 > C#

C#简单的windows文件操作方法

2016-02-26 15:31 585 查看
public class PhotoDeal
{
/*
* 1.遍历路径(包括子目录)内的所有图片
* 2.把符合条件的图片复制的对应的规定的路径
* 3.把图片信息保存进数据库
* 4.把原有路径图片删除
*
* 关键点:
* 1.当文件存在时,覆盖文件,且更新数据库数据;
* 2.要保证文件与数据库的一致性
*
*
*/

private PhotoMove.BLL.T_INFO_MONITORVIDEO bll = new PhotoMove.BLL.T_INFO_MONITORVIDEO();
private PhotoMove.BLL.T_DATA_AUDITIMAGE bll_Image = new BLL.T_DATA_AUDITIMAGE();
private List<T_DATA_AUDITIMAGE> list_Photo = new List<T_DATA_AUDITIMAGE>();
string OldDisk = ConfigurationManager.AppSettings["OldDisk"].ToString();//原盘符
string NewDisk = ConfigurationManager.AppSettings["NewDisk"].ToString();//新盘符
string OldPath = ConfigurationManager.AppSettings["OldPath"].ToString();//原有路径
string NewPath = ConfigurationManager.AppSettings["NewPath"].ToString();//新路径
public void PhotoMove()
{
List<T_INFO_MONITORVIDEO> list = GetVideo();//获得所有的摄像机站点信息
//1.遍历目录(包括子目录)内的所有图片
GetFiles(OldDisk + OldPath, list);
}

/// <summary>
/// 获得摄像机站点信息List
/// </summary>
/// <returns></returns>
private List<T_INFO_MONITORVIDEO> GetVideo()
{
List<T_INFO_MONITORVIDEO> list = new List<T_INFO_MONITORVIDEO>();
list = bll.GetModelList("");
return list;
}

/// <summary>
/// 遍历目录下(包括子目录)的所有文件
/// </summary>
/// <param name="FilePath">目录</param>
/// <param name="list">摄像机站点信息List</param>
public void GetFiles(string FilePath, List<T_INFO_MONITORVIDEO> list)
{
string[] Files = System.IO.Directory.GetFileSystemEntries(FilePath);
// 遍历所有的文件和目录
foreach (string file in Files)
{
// 先当作目录处理如果存在这个目录就重新调用GetFileNum(string srcPath)
if (System.IO.Directory.Exists(file))
GetFiles(file, list);//递归
else
GetPhotoMove(file, list);
}
}

/// <summary>
/// 获得要移动的文件信息
/// </summary>
/// <param name="File">文件路径</param>
/// <param name="list">摄像机站点信息List</param>
public void GetPhotoMove(string File, List<T_INFO_MONITORVIDEO> list)
{
T_INFO_MONITORVIDEO VIDEO = new T_INFO_MONITORVIDEO();
string[] FileList = File.Split('\\');
string PhotoName = FileList[FileList.Length - 1];//要移动的图片名称
//根据文件名中的IP判断地区跟监测站
string[] Pic = PhotoName.Split('_');
bool VideoResult = false;//标识,判断是否为要移动的图片
for (int i = 0; i < list.Count; i++)
{
if (Pic[0] == list[i].IP)//判断图片上的IP是否与数据库中有对应
{
VIDEO = list[i];
VideoResult = true;
break;
}
}
if (VideoResult)
{
//获得路径复制图片
PhotoCopy(PhotoName, VIDEO, File);
}
}

/// <summary>
/// 移动图片
/// </summary>
/// <param name="Name">图片名称</param>
/// <param name="VIDEO">拍摄机器信息</param>
/// <param name="FilePath">文件真实路径</param>
private void PhotoCopy(string Name, T_INFO_MONITORVIDEO VIDEO, string FilePath)
{
if (VIDEO != null)
{
string[] Pic = Name.Split('_');
string Time = Pic[1];//时间字符串
string Year = Time.Substring(0, 4);//年
string Month = Time.Substring(4, 2);//月
string Day = Time.Substring(6, 2);//日
string Hour = Time.Substring(9, 2);//时
string Minute = Time.Substring(11, 2);//分
string Second = Time.Substring(13, 2);//秒
if (Day == DateTime.Now.AddDays(-1).ToString("dd"))//判断是否是前一天的文件
{
//生成路径
string PicPath = NewDisk + NewPath + VIDEO.pinyin + "\\" + VIDEO.VIDEOCODE + "\\" + Year + "\\" + Month + Day + "\\";

string Endpath = PicPath + Name;
if (!System.IO.Directory.Exists(PicPath))//判断文件夹是否已经存在
{
System.IO.Directory.CreateDirectory(PicPath);//创建文件夹
}
try
{
//2.把符合条件的图片复制的对应的规定的路径
File.Copy(FilePath, Endpath, true);
}
catch (Exception ex)
{
Log.WriteLog("-error", ex.ToString());
}

#region T_DATA_AUDITIMAGE
T_DATA_AUDITIMAGE Model = new T_DATA_AUDITIMAGE();
Model.FILENAME = Name;
Model.FILEPATH = (NewPath + VIDEO.pinyin + "\\" + VIDEO.VIDEOCODE + "\\" + Year + "\\" + Month + Day + "\\" + Name).Replace("\\", "/");//Endpath;
Model.RIQI = DateTime.Parse(Year + "-" + Month + "-" + Day);
Model.SITEID = decimal.Parse(VIDEO.VIDEOID.ToString());
Model.STATUS = 0;
Model.SHOOTTIME = DateTime.Parse(Year + "-" + Month + "-" + Day + " " + Hour + ":" + Minute + ":" + Second);
#endregion
bool result = false;
try
{
//3.把图片信息保存进数据库
result = bll_Image.PhotoMove(Model);
}
catch (Exception ex)
{
Log.WriteLog("-error", ex.ToString());
}
if (result)
{
Log.WriteLog("-run", "图片" + Name + "已放入指定位置");
//4.把原有路径图片删除
// File.Delete(FilePath);
}
else
{
return;
}
}
}
}

}

}
这是个简单的C#移动文件的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows文件操作