C# 二进制流入库问题

贴一个连接:全部源码下载连接

http://blog.csdn.net/comaple/archive/2010/12/23/6095065.aspx

第一步:获取文件流字节数组

         /// <summary>
        /// 获取文件流的字节数组
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns></returns>
        private static byte[] GetBinaryBufferFromFile(string filePath, ref string fileName)
        {
            fileName = filePath.Substring(filePath.LastIndexOf("//") + 1, filePath.Length - filePath.LastIndexOf("//") - 1);
            System.IO.FileStream fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(fileStream);
            long fileLength = fileStream.Length;
            byte[] buffer = new byte[fileLength];
            buffer = binaryReader.ReadBytes((Int32)fileLength);
            binaryReader.Close();
            fileStream.Close();
            return buffer;
        }

 

 

第二步:入库我这里用到的是异步调用入库函数这是入库的部分,完整的代码可到我的csdn下载已经上传

贴一个连接:全部源码下载连接

http://blog.csdn.net/comaple/archive/2010/12/23/6095065.aspx

/// <summary>
        /// 异步调用执行方法
        /// </summary>
        public static void work()
        {
            //要入库的文件
            string sourceFilePath = "D://文件//源文件//源文件.rar";
            byte[] buffer = GetBinaryBufferFromFile(sourceFilePath, ref fileName);
            if (_importAndExport.ImportBinerary(buffer, fileName))
                Console.Write("入库成功!文件名为:{0}", fileName);
            System.Threading.Thread.Sleep(3000);
            buffer = _importAndExport.GetBineraryBuffer(ref fileName);
            Console.Write("获取文件成功!文件名:{0}", fileName.Trim());
            System.Threading.Thread.Sleep(3000);
            Console.Write("开始创建文件!");
            System.Threading.Thread.Sleep(3000);
            if (CreateFileByBinaryAndName(buffer, "D://文件//上传后的文件//" + fileName))
                Console.WriteLine("创建文件{0}成功!", fileName.Trim());

        }

 

第三步:将二进制流从数据库读出并在硬盘上重新创建文件

/// <summary>
        /// 在服务器上创建文件
        /// </summary>
        /// <param name="buffers">字节数组</param>
        /// <param name="fileName">文件名</param>
        /// <param name="filePath">路径</param>
        /// <returns></returns>
        private static bool CreateFileByBinaryAndName(byte[] buffers, string filePath)
        {
            if (System.IO.File.Exists(filePath))
                System.IO.File.Delete(filePath);
            System.IO.FileStream fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.CreateNew, System.IO.FileAccess.Write);
            System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(fileStream);

            streamWriter.Write(buffers);
            streamWriter.Flush();
            streamWriter.Close();
            fileStream.Close();
            return true;
        }

贴一个连接:全部源码下载连接

http://blog.csdn.net/comaple/archive/2010/12/23/6095065.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值