@Nikita07

Как переместить файлы по заданному условию?

Добрый день, суть вопроса в следующем, есть несколько папок и файлов (например Документы и Служебные)
5cac503109143932421332.png
Есть код на языке C#, который должен "раскидать" файлы по папкам (если файл называется "Документ", то его необходимо поместить в папку "Документы" и т.д.)
using System;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string common_path = @"C:\Users\User\Documents\Test";
            string pathA = @"C:\Users\User\Documents\Test\Документы";
            string pathB = @"C:\Users\User\Documents\Test\Служебные";
            string[] files = Directory.GetFiles(common_path,"Д*");        // Получаем список всех файлов (Документов)
            foreach(string s in files)
            {
                File.Move(s, pathA);
            }
        }
    }
}


Но при выполнении возникает ошибка "System.IO.IOException: Невозможно создать файл, так как он уже существует", но в паке ничего нет.
5cac516fe1803578212234.png
Почему возникает данная ошибка?
  • Вопрос задан
  • 549 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Вторым аргументом указывается не папка, а полный путь к новому файлу, с именем.
var filename = Path.GetFileName(s);
File.Move(s, pathA + "\\" + filename);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
on1k
@on1k
Перед File.Move, сначала проверь есть ли файл с таким же именем в директории, если есть, то уникализируй(хоть цифру допиши, хоть timestamp) имя перед перемещением файла.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы