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();
    }
    }

  • 相关阅读:
    第10组 Beta冲刺(2/5)
    第10组 Beta冲刺(1/5)
    第10组 Alpha事后诸葛亮
    3月7-第十次机试课记录
    3月5-第九次机试课记录
    3月2-第八次机试课记录
    3月1-第六次机试课记录
    2月28-第五次机试课记录
    STL
    2月27-第四次机试课记录
  • 原文地址:https://www.cnblogs.com/chengzi00/p/14448003.html
Copyright © 2011-2022 走看看