public virtual void Save(string path) { State = FileStoreState.Saved; }
public void ReplaceFile(string relativePath, string path) { // Файл должен физически существовать и быть в коллекции. if (FileWorker.Exists(path) && FileWorker.Exists(ConvertToTempPath(relativePath)) && files.FirstOrDefault(v => v == relativePath) != null) { // Не дадим заменить самого себя. if (path != ConvertToTempPath(relativePath)) { FileWorker.Copy(path, ConvertToTempPath(relativePath), true); State = FileStoreState.Changed; } } }
public void DeleteFile(string relativePath) { // Файл должен физически существовать и быть в коллекции. if (FileWorker.Exists(ConvertToTempPath(relativePath)) && files.FirstOrDefault(v => v == relativePath) != null) { files.Remove(relativePath); FileWorker.Delete(ConvertToTempPath(relativePath)); // Удаляем директорию, если она пустая. DeleteDirectoryIfEmpty(Path.GetDirectoryName(relativePath)); State = FileStoreState.Changed; } }
public void MoveFile(string oldRelativePath, string newRelativePath) { string oldPath = ConvertToTempPath(oldRelativePath); string newPath = ConvertToTempPath(newRelativePath); if (FileWorker.Exists(oldPath) && files.FirstOrDefault(v => v == oldRelativePath) != null && files.FirstOrDefault(v => v == newRelativePath) == null) { CheckAndCreateDirectory(newRelativePath); FileWorker.Move(oldPath, newPath); DeleteDirectoryIfEmpty(Path.GetDirectoryName(oldRelativePath)); files.Remove(oldRelativePath); files.Add(newRelativePath); State = FileStoreState.Changed; } }
public void AddFile(string path, string relativePath) { // Файл должен физически существовать и не быть в коллекции. if (FileWorker.Exists(path) && files.FirstOrDefault(v => v == relativePath) == null) { CheckAndCreateDirectory(relativePath); files.Add(relativePath); // Обрабатываем ситуацию, когда пользователь сам создал файл в хранилище // и теперь его добавляет. В этом случае добавления в коллекцию достаточно, // файл не копируем. if (path != ConvertToTempPath(relativePath)) FileWorker.Copy(path, ConvertToTempPath(relativePath)); State = FileStoreState.Changed; } }