zl程序教程

您现在的位置是:首页 >  其他

当前栏目

指定一个M3U8文件,判断它包含的TS文件是不是都存在。指定一个Office生成的Swf文件,判断它包含的Swf文件是不是完整都存在。

文件 一个 生成 判断 指定 完整 存在 包含
2023-09-27 14:28:13 时间
static void Main(string[] args)
        {
            //检查M3u8文件
            var fiPath =
                @"D:\Work\CloudPlatformUtil\CloudPlatformUtil\DoM3u8\M3u8\D5\D5B31B29-02B0-E0B5-AAFC-3406695D5E93.m3u8";
            var count = 0;
            var result=CheckM3U8RealTs(fiPath,out count);
            Console.WriteLine(result+"  "+count);


            //检查Office生成的swf
            fiPath = @"D:\BaiduNetdiskDownload\18\18CB654D-FDAC-664D-FE74-F64F884C8F52_1.swf";
            result=CheckOfficeSwf(fiPath, out count);
            Console.WriteLine(result + "  " + count);

            Console.ReadKey();
        }

        /// <summary>
        /// 功能:给定个office生成的swf文档,查询它共生成了多少个swf文件
        /// 作者:黄海
        /// 时间:2018-06-11
        /// </summary>
        /// <param name="fiPath"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public static bool CheckOfficeSwf(string fiPath,out int count)
        {
            //计算fiPath所在的目录
            var fi = new FileInfo(fiPath);
            var di = fi.Directory;

            var files = Directory.GetFiles(di.FullName, "*.*", SearchOption.AllDirectories)
               .Where(s => s.EndsWith(".swf") && s.StartsWith(di.FullName + "\\" + fi.Name.Substring(0, 36).ToUpper())).ToArray();

            var result = true;
            count = 0;
            var dict=new Dictionary<int,int>();
            foreach (var o in files)
            {
                dict[int.Parse(o.Replace(di.FullName + "\\" + fi.Name.Substring(0, 36) + "_", "").Replace(".swf",""))] = 1;
            }

            for (var i = 1; i < dict.Count; i++)
            {
                if (!dict.ContainsKey(i))
                {
                    result = false;
                    break;
                }
                else
                {
                    count = count + 1;
                }
            }
            return result;
        }

        /// <summary>
        /// 功能:给定一个M3U8文件,检查它所在的目录下是不是存在了指定的TS文件,如果缺少1个或多个,则返回False
        /// 作者: 黄海
        /// 时间:2018-06-11
        /// </summary>
        /// <param name="fiPath"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public static bool CheckM3U8RealTs(string fiPath,out int count)
        {
            //计算fiPath所在的目录
            var fi=new FileInfo(fiPath);
            var di = fi.Directory;
            var result = true;
            count = 0;
            //找到M3u8文件列表中的所有ts文件
            foreach (var line in File.ReadLines(fiPath))
            {
                //如果是有用的数据,不是以#开头的
                if (!(string.IsNullOrWhiteSpace(line) || line.StartsWith("#")))
                {
                    //这个TS文件是不是存在呢?
                    var fiTs = new FileInfo(di.FullName + "\\" + line);
                    if (!(File.Exists(fiTs.FullName) && (fiTs.Length > 0)))
                    {
                        result = false;
                        count = 0;
                        break;
                    }
                    else
                    {
                        count = count + 1;
                    }
                }
            }
            return result;
        }