Создание новой структуры каталогов и перемещение файлов с использованием ASP.NET и C # - PullRequest
1 голос
/ 04 октября 2010

Может кто-нибудь сказать мне, что произойдет в этом коде, когда возникнет ошибка?В идеале он должен продолжать оператор foreach до тех пор, пока не доберется до последней записи, но я подозреваю, что он останавливается в середине операции, потому что, когда я проверяю количество перемещенных файлов, он выключается на 225. Если он фактически останавливается из-за ошибкиЧто я могу сделать, чтобы продолжить цикл?

Я создаю новый менеджер закачек для нашего программного обеспечения, и мне нужно очистить старые файлы.После полутора лет использования существует около 715 потерянных файлов размером около 750 МБ, поскольку разработчики оригинала не написали код для правильной перезаписи старых файлов при загрузке новых.Они также сохранили файлы в одном каталоге.Я терпеть не могу этого, поэтому я перемещаю все файлы в структуру - имя судна - ServiceRequesetID - файлы, загруженные для этой службы.Я также даю пользователям сетку для просмотра и удаления файлов, которые им больше не нужны, поскольку они работают с сервисом.

защищенный void Button1_Click (отправитель объекта, EventArgs e) {

    GridViewRow[] rowArray = new GridViewRow[gv_Files.Rows.Count];
    gv_Files.Rows.CopyTo(rowArray, 0);

    int i = -1;

    foreach(GridViewRow row in rowArray)
    {
        i++;
        string _serviceRequestID = ((Label)gv_Files.Rows[row.RowIndex].FindControl("lbl_SRID")).Text;
        string _vesselName = ((Label)gv_Files.Rows[row.RowIndex].FindControl("lbl_VesselID")).Text;
        string _uploadDIR = Server.MapPath("uploadedFiles");
        string _vesselDIR = Server.MapPath("uploadedFiles" + "\\" + _vesselName);
        string _fileName = ((Label)gv_Files.Rows[row.RowIndex].FindControl("lbl_FileName")).Text;
        DirectoryInfo dInfo = new DirectoryInfo(_uploadDIR);
        DirectoryInfo dVessel = new DirectoryInfo(_vesselDIR);
        DirectoryInfo dSRID = new DirectoryInfo(_serviceRequestID);
        dInfo.CreateSubdirectory(_vesselName);
        dVessel.CreateSubdirectory(_serviceRequestID);

        string _originalFile = _uploadDIR + "\\" + _fileName;
        string _fileFullPath = Path.Combine(Server.MapPath("uploadedFiles/" + _vesselName + "/" + _serviceRequestID + "/"), _fileName);
        FileInfo NewFile = new FileInfo(_fileFullPath);
        string _fileUploadPath = _vesselName + "/" + _serviceRequestID + "/" + _fileName;
        string sourceFile = _originalFile;
        FileInfo _source = new FileInfo(sourceFile);
        string destinationFile = _fileFullPath;

            try
            {
                {
                    File.Move(sourceFile, destinationFile);
                    movefiles.InsertNewUploadPath(Convert.ToDecimal(_serviceRequestID), 1, _fileUploadPath);
                }
            }
            catch (Exception ex)
            {
                CreateLogFiles Err = new CreateLogFiles();
                Err.ErrorLog(Server.MapPath("Logs/ErrorLog"), ex.Message);

            }
    }

    _utility.MessageBox("Completed processing files.");
}

1 Ответ

0 голосов
/ 04 октября 2010

Пока ошибка встречается в предложении try catch, код продолжит выполняться в цикле foreach. Однако, если ошибка происходит за пределами попытки catch, функция завершает работу и выдает ошибку. Сколько файлов сообщает ваш журнал ошибок ??

...