2013-03-04 2 views
0

для моего проекта perpose, Я хочу, чтобы переместить файлы из структуры папок в папку архива на основе файлов , чьи имена не соответствует с значения столбца «имя_файла» таблицы.Перемещения файлов из исходной папки в архивную папку, которая не делает соответствие с введенными идентификаторами

Значит, мне нужно найти все имена файлов, которых нет в базе данных, а затем переместить эти файлы в другую папку.

+4

Есть ли у вас код, который вы писали (а)? –

+3

В чем вопрос? Что вы пробовали? –

ответ

3
var files = Directory.GetFiles(path); // get all files 
foreach (var file in files.Where(f => !dbFiles.Contains(f))) 
{ 
    File.Move(file, Path.Combine(destPath, Path.GetFileName(file))); 
} 

dbFiles это файлы, которые уже хранятся в базе данных. destPath - это путь, по которому вы хотите переместить файлы.

+0

достаточно интенсивный, когда вы проверяете db каждый раз – Vogel612

+0

Нет db-файлов. Только одна таблица <"ID", "FileName">, которая содержит имена файлов с идентификаторами – Maybe2013

+0

@ Vogel612 Нет. Да, если 'dbFiles' является' IEnumerable' из запроса LINQ из ORM, поддерживающего LINQ. Но я предположил, что это простой «Список ». –

1

вы можете выполнить эту задачу, выполнив следующие шаги.

  1. Получить все имена файлов из базы данных как формат данных или формат списка.

  2. Получить объект FileInfo, чтобы получить все файлы из папки.

  3. Сравните этот два объекта как datatable и FileInfo с помощью цикла foreach.

  4. Получить имя файла из объекта fileInfo, которого нет в базе данных.

  5. Переместить этот файл в другую папку.

Надеюсь, вы сможете использовать этот шаг и решить свои проблемы.

Смежные вопросы