コード例 #1
0
        protected override void InternalRunWorker(object arg)
        {
            try
            {
                _log.Info("Processing: " + arg);
                using (var path = new PowerPath(arg.ToString()))
                {
                    if (!FileExtensions.Contains(path.GetExtension()))
                    {
                        return;
                    }

                    var newDir = Path.Combine(path.GetDirectoryPath(), path.GetFileNameWithoutExtension());
                    Directory.CreateDirectory(newDir);

                    var newFile = Path.Combine(newDir, path.GetFileName());
                    File.Move(path.GetFullPath(), newFile);

                    _log.Info("Processed: " + arg);
                    OnProgressChanged(this, new ProgressChangedEventArgs(-1, newFile));
                }
            }
            catch (Exception e)
            {
                _log.Error(e, "Error processing: " + arg);
            }
        }
コード例 #2
0
        public void InternalOrganizeDirectory(string path)
        {
            // enumerate
            UpdateUi(UiState.Working);
            var extensions         = new List <string>(Settings.Default.MovieExtensions.Split(';'));
            var dirEnumbEnumerable = Directory.EnumerateFiles(path, "*", SearchOption.TopDirectoryOnly);

            // walk
            foreach (var basePath in dirEnumbEnumerable)
            {
                try
                {
                    var currentPath = new PowerPath(basePath);
                    if (!extensions.Contains(currentPath.GetExtension()))
                    {
                        return;
                    }

                    var newDir  = Path.Combine(currentPath.GetDirectoryPath(), currentPath.GetFileNameWithoutExtension());
                    var newFile = Path.Combine(newDir, currentPath.GetFileName());

                    Directory.CreateDirectory(newDir);
                    File.Move(currentPath.GetFullPath(), newFile);
                    Model.Invoke(() => Model.DataView.Add(new MovedMovieEntry
                    {
                        Title = Path.GetFileName(path),
                        Path  = Path.GetDirectoryName(path)
                    }));
                }
                catch (Exception e)
                {
                    Debug.Print("Organize error: {0}. {1}", basePath, e.Message);
                }

                if (CancellationToken.IsCancellationRequested)
                {
                    break;
                }
            }

            // finish
            UpdateUi(UiState.Ready);
        }