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

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#移动文件的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值