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#移动文件的方法。
相关文章推荐
- C#-dynamic及动态绑定
- C#关于FTP上的文件操作
- C#关于数组Console.Write("{0,4:d}",c[i,j]);是什么意思
- .NET框架中的委托和事件
- C#下使用GDAL
- 委托C#(delegate、Action、Func、predicate,Predicate)
- C#札记
- C# 命名规范
- C#Winform程序如何发布并自动升级(图解)
- C# winform程序怎么打包成安装项目(图解)
- C#单例模式的三种写法
- 由StreamWriter.WriteLine 引发对C#多线程的深入思考(一)
- c#版三层登录
- C#学习笔记:foreach原理
- C#关键字:yield
- C# 值类型与引用类型 (上)
- C# .Net动态调用webService
- C#中方法、类等的默认访问修饰符~
- C#基础之结构体&枚举&数组
- C# 生成二维码并且在中间加Logo