/// <summary> /// Сжатие /// </summary> /// <param name="pDataStream"></param> /// <param name="outBufStream"></param> /// <returns></returns> public static bool Deflate(MemoryTributary pDataStream, out MemoryTributary outBufStream) { bool result = true; int DataSize = (int)pDataStream.Length; outBufStream = new MemoryTributary(); pDataStream.Position = 0; try { MemoryTributary srcMemStream = pDataStream; { using (MemoryTributary compressedMemStream = new MemoryTributary()) { using (System.IO.Compression.DeflateStream strmDef = new System.IO.Compression.DeflateStream(compressedMemStream, System.IO.Compression.CompressionMode.Compress)) { srcMemStream.CopyTo(strmDef); } outBufStream = compressedMemStream; } } } catch (Exception ex) { outBufStream = pDataStream; result = false; } return(result); }
public bool Save_supplier_configs(UInt32 numcon, String filename) { FileStream _fs = null; Container_file f; TableFile tf; if (numcon >= Supplier_configs.Capacity) { return(false); } tf = Supplier_configs[(int)numcon].File; f = new Container_file(tf, tf.Name); if (!f.open()) { //f = null; return(false); } try { _fs = new FileStream(filename, FileMode.OpenOrCreate); } catch { return(false); } MemoryTributary out_fs = new MemoryTributary(); try { Inflate((MemoryTributary)f.Stream, out out_fs); out_fs.CopyTo(_fs); } catch { /* * msreg_m.AddError("Ошибка распаковки файла конфигурации поставщика", * "Имя файла", _filename); */ _fs.Dispose();; return(false); } _fs.Dispose(); return(true); }
public bool open() { const int MAX_PATH = 260; Stream ts; string tn = ""; char[] tempfile = new char[MAX_PATH]; int i; V8Table t; //table_blob_file addr; // TODO: возможно это должен быть МАССИВ !!!!!!!!!!!!!!!!!!!!!!!! table_blob_file[] addr; // TODO: возможно это должен быть МАССИВ !!!!!!!!!!!!!!!!!!!!!!!! uint maxpartno; if (stream != null) { stream.Seek(0, SeekOrigin.Begin); return(true); } t = file.T; addr = file.addr; maxpartno = file.maxpartno; if (maxpartno > 0) { tn = Path.GetTempFileName(); stream = new FileStream(tn, FileMode.CreateNew); fname = tn; } else { stream = new MemoryStream(); } if (packed == table_file_packed.unknown) { packed = isPacked() ? table_file_packed.yes : table_file_packed.no; } if (rstream != null) { if (packed == table_file_packed.yes) { ts = rstream; } else { stream = rstream; stream.Seek(0, SeekOrigin.Begin); return(true); } } else { if (packed == table_file_packed.yes) { if (maxpartno > 0) { //GetTempFileName(temppath, L"awa", 0, tempfile); //tn = tempfile; //ts = new TFileStream(tn, fmCreate); tn = Path.GetTempFileName(); ts = new FileStream(tn, FileMode.CreateNew); fname = tn; } else { ts = new MemoryStream(); } } else { ts = stream; } for (i = 0; i <= maxpartno; ++i) { t.ReadBlob(ts, addr[i].Blob_start, addr[i].Blob_length, false); } } if (packed == table_file_packed.yes) { ts.Seek(0, SeekOrigin.Begin); MemoryTributary out_stream = new MemoryTributary(); Inflate((MemoryTributary)ts, out out_stream); out_stream.CopyTo(stream); if (rstream is null) { ts.Dispose(); System.IO.File.Delete(tn); } } stream.Seek(0, SeekOrigin.Begin); return(true); }