static void Main(string[] args)
{
//检查M3u8文件
var fiPath =
@"D:\Work\CloudPlatformUtil\CloudPlatformUtil\DoM3u8\M3u8\D5\D5B31B29-02B0-E0B5-AAFC-3406695D5E93.m3u8";
var count = ;
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(, ).ToUpper())).ToArray(); var result = true;
count = ;
var dict=new Dictionary<int,int>();
foreach (var o in files)
{
dict[int.Parse(o.Replace(di.FullName + "\\" + fi.Name.Substring(, ) + "_", "").Replace(".swf",""))] = ;
} for (var i = ; i < dict.Count; i++)
{
if (!dict.ContainsKey(i))
{
result = false;
break;
}
else
{
count = count + ;
}
}
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 = ;
//找到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 > )))
{
result = false;
count = ;
break;
}
else
{
count = count + ;
}
}
}
return result;
}

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

  1. WORKDIR 指定工作目录 每一个 RUN 都是启动一个容器、执行命令、然后提交存储层文件变更

    WORKDIR 指定工作目录 格式为 WORKDIR <工作目录路径>. 使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不 ...

  2. Java IO流操作(III)——File类&案例一:输出制定目录下所有java文件名(包含子目录)&案例二:删除指定的目录(包含子目录)

    1. File常用的构造 File file = new File("字符串路径"); File f = new File("D:\\a\\b.txt"); F ...

  3. 通过wget工具下载指定文件中的URLs对应的资源并保存到指定的本地目录中去并进行文件完整性与可靠性校验

    创建URLs文件在终端输入cd target_directory回车,便把当前文件夹切换到了目标文件夹target_directory,此后创建的文件都会丢它里面在终端输入cat > URLs回 ...

  4. Python3 根据m3u8下载视频,批量下载ts文件并且合并

    Python3 根据m3u8下载视频,批量下载ts文件并且合并 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少 ...

  5. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  6. JAVA如何把一个float四舍五入到小数点后2位,4位,或者其它指定位数.

    怎么使float保留两位小数或多位小数 http://meryvn.blog.163.com/blog/static/36962664201173010402629/ 两种方法: import   j ...

  7. Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

  8. 从TS流定位H264的每一个视频帧开始,判断出帧类型

    从TS流定位H264的每一个视频帧开始,判断出帧类型(待续)

  9. C# FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。"的错误

    FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址."的错误 解决方法是在原代码上增加这句话 reqFTP.UsePassive = f ...

随机推荐

  1. IoC之Spring.Net在Mvc项目中的使用

    MVC中使用Spring.net 前面学习了使用Autofac来实现控制反转,这里简单记录Spring.Net实现IoC和DI的步骤 第一步:安装如下Nuget包 (Spring.Web.Mvc) i ...

  2. Neural Networks and Deep Learning 课程笔记(第四周)深层神经网络(Deep Neural Networks)

    1. 深层神经网络(Deep L-layer neural network ) 2. 前向传播和反向传播(Forward and backward propagation) 3. 总结 4. 深层网络 ...

  3. JMS学习(七)-ActiveMQ消息的持久存储方式之KahaDB存储

    一,介绍 自ActiveMQ5.4以来,KahaDB成为了ActiveMQ默认的持久化存储方式.相比于原来的AMQ存储方式,官方宣称KahaDB使用了更少的文件描述符,并且提供了更快的存储恢复机制. ...

  4. 目标提取深度神经网络分析权衡 trade offs

    RCNN: 直接使用object proposal 方法得到image crops 送入神经网络中,但是crops 的大小不一样,因此使用 ROI Pooling,这个网络层可以把不同大小的输入映射到 ...

  5. VS中修改工程名的解决方案

    VS中修改工程名的解决方案: 一.先修改工程名/解决方案名(在VS中修改即可)举例,原先的工程名为OldProject   想要改成NewProject1.找到工程/解决方案所在的文件夹(已工程名/解 ...

  6. android SQLiteOpenHelper 使用

    1.实体 package mydemo.mycom.demo2.entity; public class UserInfo { private int id; private String usern ...

  7. 图片和流的相互转化 (c/s)

    //图片转化为流保存: Stream ms; byte[] picbyte; OpenFileDialog open = new OpenFileDialog(); open.Filter = &qu ...

  8. USB摄像头无法正常读取问题

    opencv读取摄像头或者视频一种是早期版本的IplImage结构体,图片就存在结构体指针IplImage*中,另一种是Mat类,两者在操作上略有差异,且opencv2都兼容这两个版本,前面的博客也说 ...

  9. JavaScript练习 - 正反选练习

    正反选练习 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  10. MongoDB的基本概念

    MongoDB的基本概念 库 db就是数据库 文档就是数据表的行 集合就是数据表,这个没有模式,啥叫没有模式呢,就是没有列的定义,随便什么属性都行,这点就比关系行数据库牛逼10000000倍,逆天了.