/// <summary>
        /// 视频文件转移
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="outputPath"></param>
        public void FileTransfer(string filePath, string outputPath)
        {
            if (!File.Exists(filePath))
            {
                return;
            }
            if (string.IsNullOrWhiteSpace(outputPath) || !Directory.Exists(outputPath))
            {
                return;
            }

            //可以做视频限制,比如当视频是.mp4格式时大于XX兆才转移
            var fileExtension = CommonService.GetFileExtension(filePath);

            if (fileExtension == null)
            {
                return;
            }
            if (fileExtension.Equals("mp4"))
            {
                using (var fileStream = File.Open(filePath, FileMode.Open))
                {
                    if (fileStream.Length < _minSize)
                    {
                        return;
                    }
                }
            }

            string outputFilePath = Path.Combine(outputPath, CommonService.GetFileName(filePath));

            if (!File.Exists(outputFilePath))
            {
                File.Move(filePath, outputFilePath);
            }
            else
            {
                string fileNewName = CommonService.GetFileName(filePath).Split('.')[0] + new Random().Next(0, 9999) + CommonService.GetFileExtension(filePath);
                File.Move(filePath, Path.Combine(outputPath, fileNewName));
            }
        }
예제 #2
0
        /// <summary>
        /// 图片文件转移
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="outputPath"></param>
        public void FileTransfer(string filePath, string outputPath)
        {
            //图片转移规则为:
            //若该图片路径下存在多于X张的图片,则将此路径下的所有图片文件都转移到对应的output文件夹下,并且创建一个名称为图片所在文件夹名的文件夹存放这些图片

            //说明之前的转移中已经把该图片进行转移了,因此直接返回空即可
            if (!File.Exists(filePath))
            {
                return;
            }

            if (outputPath == null || !Directory.Exists(outputPath))
            {
                return;
            }

            //获取当前文件所在的文件夹路径
            var fileParentPath = CommonService.GetFileParentPath(filePath);

            if (fileParentPath == null || string.IsNullOrWhiteSpace(fileParentPath))
            {
                return;
            }

            var files = Directory.GetFiles(fileParentPath);

            if (files == null || files.Length == 0)
            {
                return;
            }

            //获取当前图片的扩展名
            var fileExtension = CommonService.GetFileExtension(filePath);
            var filesList     = files.ToList();

            //按照逻辑,如果同类型图片数量小于X张,则不移动
            if (filesList.Count(item => CommonService.GetFileExtension(item).Equals(fileExtension)) < _minCount)
            {
                return;
            }

            //否则获取全部同类型的图片进行移动
            var moveList = filesList.FindAll(item => CommonService.GetFileExtension(item).Equals(fileExtension));
            //创建输出目录
            var outputTruePath = Path.Combine(outputPath, CommonService.GetFileFolder(filePath));

            if (!Directory.Exists(outputTruePath))
            {
                Directory.CreateDirectory(outputTruePath);
            }
            if (!Directory.Exists(outputTruePath))
            {
                throw new Exception($"输出目录【{ outputTruePath }】创建失败!");
            }

            //进行移动
            foreach (var item in moveList)
            {
                string fileName       = CommonService.GetFileName(item);
                var    fileOutputPath = Path.Combine(outputTruePath, fileName);
                if (!File.Exists(fileOutputPath))
                {
                    File.Move(item, fileOutputPath);
                }
            }
        }