コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ConfigStorage.cs プロジェクト: fishca/MetaRead
        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);
        }