首页 > 编程语言 >【C#】FileStream使用汇总

【C#】FileStream使用汇总

时间:2023-08-08 11:11:39浏览次数:56  
标签:stream C# List 汇总 FileStream 搜索 byte

一、在FileStream流和byte[]中查找(搜索)指定字符串

        /// <summary>
        /// 在当前流中搜索指定的 byte[]
        /// </summary>
        /// <param name="arr"></param>
        /// <param name="key">搜索关键字</param>
        /// <param name="beginPosition">搜索开始位置</param>
        /// <returns>如果存在则返回byte[]在流中首次出现的位置,否则返回 -1</returns>
        private static List<long> Search(FileStream stream, long beginPosition, long endPosition, byte[] key)
        {
            //FileStream stream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            List<long> position = new List<long>();

            if (stream == null || stream.Length <= beginPosition)
            {
                return null;
            }

            if (key == null || stream.Length < key.Length)
            {
                return null;
            }

            long i = -1;
            long j = -1;
            int currentByte = int.MinValue;
            //for (i = beginPosition; i < stream.Length; i++)
            for (i = beginPosition; i < endPosition; i++)
            {
                if (stream.Length < key.Length + i)
                {
                    break;
                }
                stream.Seek(i, SeekOrigin.Begin);
                for (j = 0; j < key.Length; j++)
                {
                    currentByte = stream.ReadByte();
                    if (currentByte != key[j])
                    {
                        break;
                    }
                }
                if (j == key.Length)
                {
                    //return i;
                    position.Add(i);
                }

                if (currentByte == -1)
                {
                    break;
                }
            }
            return position;
        }

参考:https://blog.csdn.net/lonelyenvoy/article/details/52416529

 

标签:stream,C#,List,汇总,FileStream,搜索,byte
From: https://www.cnblogs.com/Mars-0603/p/17613642.html

相关文章

  • Linux使用rsync备份到Synology NAS
    将数据从Linux设备备份到SynologyNAS将数据从Linux设备备份到SynologyNAS的最常见方法是使用rsync来制作镜像文件夹。您可能需要使用事先装载的CIFS或NFS将SynologyNAS上的文件夹装载到Linux设备。此命令为: [root@www~]#rsync-av[source_folder][destination_folder]......
  • 视频融合平台视频汇聚平台LiteCVR用户反馈接入设备显示离线处理教程
    LiteCVR视频融合平台是一款基于云边端一体化架构的应用程序,旨在提供强大的数据接入、处理和分发功能。该平台支持多种协议接入,包括市场主流标准协议和厂家私有协议及SDK,例如国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等。我们收到了用户的反馈,他们在长时间使用Li......
  • 10.ReplicaSet手动蓝绿部署、滚动发布、回滚及Deployment自动滚动发布、回滚及金丝雀
    Kubernetes的控制器Kubernetes的控制器类型◼打包于ControllerManager中内置提供的控制器,例如ServiceController、DeploymentController等◆基础型、核心型控制器◆打包运行于kube-controller-manager中◼插件或第三方应用的专用控制器,例如Ingress插件ing......
  • CMD批处理所有子文件夹中的文件按子文件夹名称命名并提取到一个文件夹中
    我有一个名叫 baiyin的文件夹里面有一些按日期命名的子文件夹 子文件夹下有相同命名为screen_035800.png的图片 现在我想把图片按照子文件夹的日期名称重命名后 移到另一个文件夹allbaiyin中  并删除空文件夹 如果不删除去掉Rd/q"%%i"如果不移动只是复制则......
  • web开发----jsp中通用模版的引用 include的用法
    web开发中常常会有一些代码需要多个页面使用,比如banner nav导航 还有footer等.ASP.NET开发中有母版页的说法,也就是写一些通用的模版页,然后其他页面可以引用。 jsp中 当然也有这样的用法 也就是include的用法 两种用法一种是说明标签<%@include file="xxx.jsp"%>,......
  • centos安装php php-fpm 以及 配置nginx
    下载php源码包http://www.php.net/downloads.php安装phptar-xvfphp-5.5.13.tar.bz2cdphp-5.5.13./configure--prefix=/usr/local/php--with-config-file-path=/etc--enable-inline-optimization--disable-debug--disable-rpath--enable-shared--enable-opcache--......
  • 12.Job和CronJob
    Job和CronJob编排作业级应用JobJob控制器的应用编排机制如果说daemoset和deployment主要负责编排始终运行的守护进程类应用;而Job则是负责编排运行有结束时间的“一次性”任务。◼控制器要确保Pod内的进程“正常(成功完成任务)”地退出◼非正常退出的Pod可以根据需要重启,......
  • C++ | 运算符重载
    运算符重载在类中的函数进行重载(成员函数)运算符重载用于重新定义运算符的作用,使用函数名称operatorOP作为函数名,其中OP为具体的运算符(如operator+)classTime{Timeoperator+(constTime&t);};Timea,b;Timec=a+b;在成员函数中重载的运算符,如+-等,默认左边......
  • C语言(不完善)
    C语言程序设计分支和循环语句C语句可分为以下五类:表达式语句、函数调用语句、控制语句、符合语句、空语句选择语句if语句如果表达式的结果为真,则语句执行。(0为假,非0为真)else的匹配:else是和它离的最近的if匹配的。语法结构:if(表达式){语句;}if(表达式){......
  • C++ | const的使用
    const基础用法用于声明一个不可再被修改的变量:constintnum=17;num=33; //Invalid,会报错用于指针首先,如果将一个指针用const声明为常量指针,那么这个指针的指向将不能被改变。但可以通过这个指针来修改被指向的对象:intdemo=17;int*constp=&demo; //......