zoukankan      html  css  js  c++  java
  • 文件转二进制流拆分与组装


    //上传文件转二进制流
    string fileFullPath = Path.Combine(UploadRoot, filePath);
    using (FileStream fs = new FileStream(fileFullPath, FileMode.Open, FileAccess.Read, FileShare.Read))
    {
    using (BinaryReader FileReader = new BinaryReader(fs))
    {
    byte[] Bytes;
    var file_size = 8192;
    int fileCount = Convert.ToInt32(Math.Ceiling((double)fs.Length / file_size));
    for (int i = 0; i < fileCount; i++)
    {
    Content Content = new Content();
    Bytes = FileReader.ReadBytes(file_size);
    Content.Id = Guid.NewGuid();
    Content.F_Content = Compress(Bytes);
    Content.F_OrderIndex = i;
    Content.CreateTime = DateTime.Now;
    _iContentAppService.Add(Content, null);
    }
    }
    }

    //组二进制流
    public byte[] GetContent(Guid id)
    {
    List<byte> byteSource = new List<byte>();
    try
    {
    var bAFJContents = bAFJContentAppService.FindByFilter(t => t.F_BAFJ_ID == id, null, null, f => new { f.Id });
    for (int pageNumber = 1; pageNumber <= bAFJContents.Count() / PageSize + 1; pageNumber++)
    {
    var BAFJContent = bAFJContentAppService.FindPagedByFilter(specification.SatisfiedBy(), null, pageNumber, PageSize, order, null);
    foreach (var item in BAFJContent)
    {
    byteSource.AddRange(Depress(item.F_Content));
    }
    }
    }
    catch (Exception ex)
    {
    LoggerFactory.CreateLog().Error(ex.ToString());
    }
    return byteSource.ToArray();
    }


    /// <summary>
    /// 压缩二进制流
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public static byte[] Compress(byte[] data)
    {
    using (var memoryStream = new MemoryStream())
    {
    using (var compressionStream = new GZipStream(memoryStream, CompressionMode.Compress))
    {
    compressionStream.Write(data, 0, data.Length);
    compressionStream.Flush();
    }
    return memoryStream.ToArray();
    }
    }

    /// <summary>
    /// 解压二进制流
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public static byte[] Depress(byte[] data)
    {
    using (var memoryStream = new MemoryStream(data))
    using (var outStream = new MemoryStream())
    {
    using (var compressionStream = new GZipStream(memoryStream, CompressionMode.Decompress))
    {
    compressionStream.CopyTo(outStream);
    compressionStream.Flush();
    }
    return outStream.ToArray();
    }
    }

  • 相关阅读:
    嵌入式系统WinCE下应用程序GUI界面开发【转】
    pidstat 命令详解
    shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
    阿里云k8s部署zookeeper集群
    Kubernetes StatefulSet
    dubbo-admin管理平台搭建
    k8s pv,pvc无法删除问题
    Linux配置AndroidSDK&Jenkins远程部署
    CentOS的vsftp修改默认配置路径方法
    Java语法糖3:泛型
  • 原文地址:https://www.cnblogs.com/chengzi00/p/14448003.html
Copyright © 2011-2022 走看看