Beispiel #1
0
        /// <summary>
        /// Загрузка метаданных
        /// </summary>
        void LoadFile()
        {
            string fname = Parent.FullPath + "/" + META_FILE_NAME;

            if (File.Exists(fname))
            {
                // Чтение чанкового файла
                ChunkedFile cf = new ChunkedFile(fname);
                if (!cf.Root.Name.StartsWith("SBMeta"))
                {
                    return;
                }

                // Чанки с данными
                fileData = new Dictionary <string, byte[]>();
                foreach (ChunkedFile.Chunk ch in cf.Root.Children)
                {
                    ChunkedFile.ContainerChunk cont = ch as ChunkedFile.ContainerChunk;

                    // Чтение имени и данных
                    string name = Encoding.Unicode.GetString((cont.Children[0] as ChunkedFile.DataChunk).Data);
                    byte[] data = (cont.Children[1] as ChunkedFile.DataChunk).Data;

                    // Сохранение
                    fileData.Add(name.ToLower(), data);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Сохранение файла
        /// </summary>
        void SaveFile()
        {
            if (fileData != null)
            {
                string fname = Parent.FullPath + "/" + META_FILE_NAME;
                if (File.Exists(fname))
                {
                    File.Delete(fname);
                }

                // Выход если файлов нет
                if (fileData.Count == 0)
                {
                    return;
                }

                // Запись данных
                ChunkedFile ch = new ChunkedFile();
                ch.Root.Name = "SBMeta1";

                // Сохранение файлов
                foreach (KeyValuePair <string, byte[]> b in fileData)
                {
                    ChunkedFile.ContainerChunk cont = new ChunkedFile.ContainerChunk();

                    // Запись имени и файла
                    cont.Children.AddRange(new ChunkedFile.Chunk[] {
                        new ChunkedFile.DataChunk("FileNam", Encoding.Unicode.GetBytes(b.Key)),
                        new ChunkedFile.DataChunk("RawData", b.Value)
                    });

                    ch.Root.Children.Add(cont);
                }

                // Запись файла
                ch.Save(fname);
                File.SetAttributes(fname, FileAttributes.Hidden);
            }
        }