예제 #1
0
        /// <summary>
        /// Saves the object to the specified file
        /// </summary>
        /// <typeparam name="T">The type of object you are saving</typeparam>
        /// <param name="settings">The object you are saving</param>
        /// <param name="file">The stream you are saving to</param>
        /// <param name="keyName">The name of the key you are saving to</param>
        public static void Save <T>(T settings, Stream file, string keyName)
        {
            Stream     stream     = null;
            ZipArchive fileToSave = null;

            try
            {
                fileToSave = new ZipArchive(file);
                IFormatter formatter = new BinaryFormatter();
                try { fileToSave.GetEntry(keyName).Delete(); }
                catch { }
                stream = fileToSave.CreateEntry(keyName).Open();
                formatter.Serialize(stream, settings);
            }
            catch (Exception ex)
            {
                BasicTools.LogErr(ex, LogPath, LogIncludeAppName);
            }
            finally
            {
                if (null != stream)
                {
                    stream.Close();
                }
                if (null != file)
                {
                    file.Dispose();
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Loads all keys from the specified file
        /// </summary>
        /// <param name="file">The name of the file where the objects are stored</param>
        /// <returns>A dictionary representing all the objects in <paramref name="file"/></returns>
        public static Dictionary <string, object> Load(Stream file)
        {
            Stream stream = null;
            Dictionary <string, object> settingsArr = new Dictionary <string, object>();
            ZipArchive fileToLoad = null;

            try
            {
                fileToLoad = new ZipArchive(file);
                IFormatter formatter = new BinaryFormatter();
                foreach (ZipArchiveEntry key in fileToLoad.Entries)
                {
                    string keyName = key.FullName;
                    stream = key.Open();
                    object settings = formatter.Deserialize(stream);
                    settingsArr.Add(keyName, settings);
                }
            }
            catch (Exception ex)
            {
                BasicTools.LogErr(ex, LogPath, LogIncludeAppName);
            }
            finally
            {
                if (null != stream)
                {
                    stream.Close();
                }
                if (null != file)
                {
                    file.Dispose();
                }
            }
            return(settingsArr);
        }
예제 #3
0
        /// <summary>
        /// Recalls a serialized object from a file
        /// </summary>
        /// <typeparam name="T">The type of object</typeparam>
        /// <param name="file">The stream to recall from</param>
        /// <param name="keyName">The key to recall from</param>
        /// <returns>The object you deserialized</returns>
        public static T Load <T>(Stream file, string keyName)
        {
            Stream     stream     = null;
            T          settings   = default(T);
            ZipArchive fileToLoad = null;

            try
            {
                fileToLoad = new ZipArchive(file);
                IFormatter formatter = new BinaryFormatter();
                stream   = fileToLoad.GetEntry(keyName).Open();
                settings = (T)formatter.Deserialize(stream);
            }
            catch (Exception ex)
            {
                BasicTools.LogErr(ex, LogPath, LogIncludeAppName);
            }
            finally
            {
                if (null != stream)
                {
                    stream.Close();
                }
                if (null != file)
                {
                    file.Dispose();
                }
            }
            return(settings);
        }
예제 #4
0
        /// <summary>
        /// Loads all keys of type <typeparamref name="T"/> from the specified file
        /// </summary>
        /// <typeparam name="T">The type of objects to load</typeparam>
        /// <param name="fileName">The name of the file were the objects are stored</param>
        /// <returns>A dictionary where the representing all the objects of type <typeparamref name="T"/> in the file</returns>
        public static Dictionary <string, T> Load <T>(string fileName)
        {
            Stream stream = null;
            Dictionary <string, T> settingsArr = new Dictionary <string, T>();
            ZipArchive             file        = null;

            try
            {
                file = ZipFile.OpenRead(fileName);
                IFormatter formatter = new BinaryFormatter();
                foreach (ZipArchiveEntry key in file.Entries)
                {
                    string keyName = key.FullName;
                    stream = key.Open();
                    object settings = formatter.Deserialize(stream);
                    if (settings.GetType() == typeof(T))
                    {
                        settingsArr.Add(keyName, (T)settings);
                    }
                }
            }
            catch (Exception ex)
            {
                BasicTools.LogErr(ex, LogPath, LogIncludeAppName);
            }
            finally
            {
                if (null != stream)
                {
                    stream.Close();
                }
                if (null != file)
                {
                    file.Dispose();
                }
            }
            return(settingsArr);
        }
예제 #5
0
        private static byte[] Compress_OpenG32(byte[] input)
        {
            string bin = "";

            foreach (byte curr_byte in input)
            {
                string tmpBin = Convert.ToString(curr_byte, 2);
                bin += Convert.ToString(tmpBin.Length, 2).PadLeft(4, '0') + tmpBin;
            }
            string[] strBinBytes = BasicTools.StrSplit(bin, 8);
            strBinBytes[strBinBytes.Length - 1].PadRight(8, '0');
            List <byte> returnBytes = new List <byte>();

            foreach (string byte2 in strBinBytes)
            {
                returnBytes.Add(Convert.ToByte(byte2, 2));
            }
            if (returnBytes.ToArray().Length < input.Length)
            {
                Compress_OpenG32(returnBytes.ToArray());
            }
            times++;
            return(returnBytes.ToArray());
        }