Проблема с файловыми транзакциями - где хранится каждый файл? - PullRequest
1 голос
/ 14 ноября 2010

Я создаю приложение, которое использует Quartz.NET для автоматической загрузки и выгрузки файлов в различные источники (HTTP, FTP и сетевые пути) на основе регулярного выражения. Пользователи могут выбирать несколько путей для каждой операции загрузки и выгрузки, поэтому типичной задачей может быть загрузка файлов с http-сервера, а также загрузка с ftp-сервера и загрузка всех файлов в сетевой путь.

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

Проблема в том, что для определенных путей пользователь может запросить их удаление после завершения загрузки, что является проблемой, как узнать, откуда в папке находится файл? Я пытался придумать способы обойти это, например, создать папки для каждого пути загрузки, но мне нужно проверять дубликаты имен при загрузке, а не при загрузке, плюс мне нужно объединить обе подпапки ... и т. Д. !

Может кто-нибудь предложить какие-нибудь идеи? Большое спасибо

Ответы [ 2 ]

0 голосов
/ 15 ноября 2010

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

0 голосов
/ 15 ноября 2010

Думайте об этом объектно-ориентированным образом.Создайте класс, подобный этому

public class File
{

public string source;
public string destination;
public bool deleteSource; //if true delete the source after the copy

}

Теперь создайте список классов файлов, например List<File> files, и сохраните его как переменную в своем приложении.Сначала добавьте объекты в список, затем просмотрите список и скопируйте / загрузите файлы.Проверьте свойство deleteSource и, если оно истинно, удалите файл после операции копирования.

Это базовая идея и при необходимости разверните этот класс.

Что я хочуподчеркнуть, что придумать проблему объектно-ориентированным способом и начать проектирование

...