C#读取大文件(四)

简介:
    }    
            prgLoader.Value = 100;    
            lblShowPercent.Text = prgLoader.Value.ToString() +  "%" ;    
            btnOk.Text =  "关闭" ;    
         }    
        }    
         else     
        {    
          if (intCount == 0)    
         {    
            strSelect = strTargetSelect;    
            sqlcmd.CommandText = strSelect;    
            bytContent =  new   byte [intLength];    
            bytContent = sqlcmd.ExecuteScalar()  as   byte [];    
            fs.Write(bytContent,0,intLength);    
         }    
          else     
         {    
             int  i = 0;    
            bytContent =  new   byte [intBlock];    
             while (i < intCount)    
            {    
             strSelect =  "declare @content varbinary(16) " //再sql中声明获取目标image列内容的句柄变量    
             strSelect += strTargetHandle;  //获取句柄    
              //锁定并读取指定长度的数据    
             strSelect +=  " readtext "  + strTableName +  "."  + strColumnName +  " @content @start @count HOLDLOCK" ;    
              if (i == 0)    
             {    
                 //添加@start和@count变量,分别表偏移变量和取的长度    
                sqlcmd.Parameters.Add( "@start" ,System.Data.SqlDbType.Int).Value = 0;     
                sqlcmd.Parameters.Add( "@count" ,System.Data.SqlDbType.Int).Value = intBlock;    
             }    
              else     
             {    
                sqlcmd.Parameters[ "@start" ].Value = i * intBlock;    
                sqlcmd.Parameters[ "@count" ].Value = intBlock;    
             }    
             sqlcmd.CommandText = strSelect;    
             bytContent = sqlcmd.ExecuteScalar()  as   byte [];    
 fs.Write(bytContent,0,intBlock);    
             ++i;    
 
            }    
             //将剩余的字节写入流    
             int  intResidual = intLength % intBlock;    
             if (intResidual > 0)    
            {    
             strSelect =  "declare @content varbinary(16) " //再sql中声明获取目标image列内容的句柄变量    
             strSelect += strTargetHandle;  //获取句柄    
              //锁定并读取指定长度的数据    
             strSelect +=  " readtext "  + strTableName +  "."  + strColumnName +  " @content @start @count HOLDLOCK" ;    
             bytContent =  new   byte [intResidual];    
             sqlcmd.Parameters[ "@start" ].Value = intCount * intBlock;    
             sqlcmd.Parameters[ "@count" ].Value = intResidual;    
             sqlcmd.CommandText = strSelect;    
             bytContent = sqlcmd.ExecuteScalar()  as   byte [];    
             fs.Write(bytContent,0,intResidual);    
 
            }    
         }    
 
        }    
         bytContent =  null ;    
         fs.Close();    
     }    
      catch     
     {    
            state = 0;    
            System.IO.File.Delete(strPath);    
                                    bytContent =  null ;    
                                    fs.Close();    
             return   false ;    
     }    
     state = 0;    
      return   true ;    

    }



本文转自 BruceAndLee 51CTO博客,原文链接:http://blog.51cto.com/leelei/194147,如需转载请自行联系原作者

相关文章
|
大数据 C#
C# 读取大文件 (可以读取3GB大小的txt文件)
原文:C# 读取大文件 (可以读取3GB大小的txt文件) 在处理大数据时,有可能 会碰到 超过3GB大小的文件,如果通过 记事本 或 NotePad++去打开它,会报错,读不到任何文件。
4835 1
|
前端开发 C#
C# Net MVC 大文件下载几种方式、支持速度限制、资源占用小
C# Net MVC 大文件下载几种方式、支持速度限制、资源占用小
|
C# 内存技术
C# FileStream复制大文件
即每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。 本文转载:http://www.cnblogs.com/wolf-sun/p/3345392.html     FileStream缓冲读取和写入可以提高性能。
1611 0
|
11月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
450 19
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
496 3
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
2473 0