示例#1
0
        public void SaveLayer(DirectoryInfo layersDir, LayerInfo layer)
        {
            var layerDir = layersDir
                           .CreateSubdirectory(LayerPrefix + layer.EventDate.ToString(TimeStampFormat));

            var path = Path.Combine(layerDir.FullName, layer.RelativePath);

            switch (layer.ChangeType)
            {
            case WatcherChangeTypes.Deleted:
                path = Path.Combine(path, $"{DeletePrefix}{layer.FileName}");
                FileProvider.CreateWithDirectory(path, null);
                break;

            case WatcherChangeTypes.Renamed:
                path = Path.Combine(path, $"{RenamePrefix}{layer.FileName}_{layer.NewName}");
                FileProvider.CreateWithDirectory(path, null);
                break;

            default:
                path = Path.Combine(path, layer.FileName);
                XmlSerializer formatter = new XmlSerializer(typeof(AddOrUpdateData));

                FileProvider.CreateWithDirectory(path,
                                                 () =>
                {
                    using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
                    {
                        formatter.Serialize(fs, layer.AddOrUpdateData);
                    }
                });

                break;
            }
        }
示例#2
0
        /// <summary>
        /// Инициализация хранилища состояния файлов и папок программы
        /// </summary>
        private void InitIfNeed()
        {
            if (!Settings.SrcFilesDir.Exists)
            {
                Settings.SrcFilesDir.Create();

                DirectoryInfo observableDir = new DirectoryInfo(Settings.ObservedDirectoryPath);
                var           files         = observableDir.GetFiles("*.txt", SearchOption.AllDirectories);

                foreach (var elem in files)
                {
                    var elemRelativePath = RelativePathFinder
                                           .GetRelativePath(elem.FullName, observableDir.FullName);

                    var newPath = Path.Combine(
                        Settings.SrcFilesDir.FullName,
                        elemRelativePath,
                        elem.Name
                        );

                    var dataRows = FileProvider.TryReadAllLines(elem.FullName);
                    FileProvider.CreateWithDirectory(newPath, () => { File.WriteAllLines(newPath, dataRows); });
                    //File.WriteAllLines(newPath, dataRows);


                    StateStorage.FilesData.Add(
                        Path.Combine(elemRelativePath, elem.Name),
                        new StorageData()
                    {
                        //FullName = newPath,
                        Name     = elem.Name,
                        Relative = elemRelativePath,
                        Text     = dataRows
                    });
                }
            }
            else
            {
                StateStorage = StorageProvider
                               .ReadStorage(Settings.SrcFilesDir);

                var allLayers = LayerProvider
                                .GetAllLayers(Settings.LayersDir);

                allLayers.ToList()
                .ForEach(
                    e => StateStorage = LayerApplier.Apply(StateStorage, e)
                    );
            }


            if (!Settings.LayersDir.Exists)
            {
                Settings.LayersDir.Create();
            }
        }