Fixed: Improve moving file to location where another one exists

Fixes #7460

(cherry picked from commit 8ab040f612ee04dac4813a08cdeaddd446a64dc9)
This commit is contained in:
Kevin Richter 2022-08-07 20:52:54 +02:00 committed by Qstick
parent 7c6858ecfb
commit b1f0b2c216
3 changed files with 24 additions and 0 deletions

View File

@ -264,6 +264,11 @@ namespace NzbDrone.Common.Disk
protected virtual void MoveFileInternal(string source, string destination) protected virtual void MoveFileInternal(string source, string destination)
{ {
if (File.Exists(destination))
{
throw new FileAlreadyExistsException("File already exists", destination);
}
File.Move(source, destination); File.Move(source, destination);
} }

View File

@ -0,0 +1,15 @@
using System;
namespace NzbDrone.Common.Disk
{
public class FileAlreadyExistsException : Exception
{
public string Filename { get; set; }
public FileAlreadyExistsException(string message, string filename)
: base(message)
{
Filename = filename;
}
}
}

View File

@ -107,6 +107,10 @@ namespace NzbDrone.Core.MediaFiles
_eventAggregator.PublishEvent(new MovieFileRenamedEvent(movie, movieFile, previousPath)); _eventAggregator.PublishEvent(new MovieFileRenamedEvent(movie, movieFile, previousPath));
} }
catch (FileAlreadyExistsException ex)
{
_logger.Warn("File not renamed, there is already a file at the destination: {0}", ex.Filename);
}
catch (SameFilenameException ex) catch (SameFilenameException ex)
{ {
_logger.Debug("File not renamed, source and destination are the same: {0}", ex.Filename); _logger.Debug("File not renamed, source and destination are the same: {0}", ex.Filename);