@Anton_repr

Как переместить файл?

У меня есть два метода: поиск и сортировка.
Поиск:
public void Search()
        {
            title = title_tb.Text;
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.DefaultExt = "fb2";
            ofd.Filter = "fb2 files (*.fb2)|*.fb2|All files (*.*)|*.*";
            Nullable<bool> result = ofd.ShowDialog();
            if (result.HasValue == true)
            {
                // Open document                
                filename = ofd.FileName;                
                title_tb.Text = System.IO.Path.GetFileName(filename);
            }
        }

Я нахожу файл определенного формата, в дальнейшем его необходимо переместить в другую папку.
Сортировка:
private void SortClick_btn(object sender, RoutedEventArgs e)
        {
            //for sorting pb2
            title = title_tb.Text;
            path = Link_tb.Text;
            subpath = author_tb.Text;
            seriespath = SeriesOfBooks_tb.Text;


            string mydir = $@"{path}\{subpath}\{seriespath}";
            if (!Directory.Exists(mydir)) Directory.CreateDirectory(mydir);

            if (!string.IsNullOrWhiteSpace(SeriesOfBooks_tb.Text))
            // **переместить в папку seriespath**

        }

Если SeriesOfBooks_tb.Text не пустой, то выбранный файл добавляется в папку с названием, которое написано в SeriesOfBooks_tb.Text. Как это сделать?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
Если я правильно понял, что начальный путь в title, а конечный в mydir, то:
File.Move(title, mydir);
Я бы добавил еще проверку на существование файла в указанном пути, потому что, если файл уже существует, то выпадет исключение IOException. В итоге:
if (File.Exists(mydir))	
     File.Delete(mydir);
File.Move(title, mydir);
Ответ написан
@deyen
или воспользоваться программой командной строки move.
То есть просто создать дочерний процесс без создания окна. Параметры запуска "move c:\test\file1.txt D:\folder2\file2.txt" - перенести файл file1.txt из каталога test диска C: в каталог folder2 диска D: под именем file2.txt.
Думаю, это нормальное решение, т.к. задача по перемещению файла будет возлагаться на программу, которая предоставлена вместе с операционной системой. А в своей программе ты уже просто реализуешь алгоритмы поиска и сортировки.

примерно как-то так
void yourbestfunction()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);

            startInfo.Arguments = "move C:\test\file1.txt D:\folder2\file2.txt";

            Process.Start(startInfo);
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы