#c# #.net #ffmpeg
#c# #.net #ffmpeg
Вопрос:
Мой код обрабатывает видеофайл (с использованием ffmpeg) и создает для него различные качества (360p, 480p и т. Д.) И форматы (mp4 и HLS). После создания этих файлов я перемещаю их все на другой диск (сетевое расположение).
мой код выглядит следующим образом:
var files = Directory.GetFiles(srcFolder);
string filename, destFile = string.Empty, srcFile = string.Empty;
try
{
for (int i = 0; i < files.Length; i )
{
srcFile = files[i];
filename = Path.GetFileName(srcFile);
destFile = Path.Combine(destFolder, filename);
File.Move(srcFile, destFile);
}
}
catch
{
_logger.LogError("Error in moving file. srcFile: {0}, destFile: {1}", destFile, srcFile);
throw;
}
Большую часть времени этот процесс работает нормально, но для некоторых файлов я получаю исключение ввода-вывода при каждом запуске этого процесса.
System.IO.IOException: файл существует. в System.IO.FileSystem.MoveFile(строка sourceFullPath, строка destFullPath, логическая перезапись)
Я убедился, что папка destFolder ранее не существовала, равно как и файл destFile.
После регистрации ошибки и нахождения пути к исходному и целевому файлам я загрузил их оба. Исходным файлом является файл .ts размером 1048 КБ, а целевой файл — пустой файл с тем же именем (0 КБ).
Эта ошибка возникала несколько раз с одним и тем же видео, поэтому я предполагаю, что это как-то связано с самим файлом. Но я не могу понять это.
Комментарии:
1. У вас есть доступ к отладке этой части?
2. Вы пробовали File. Переместить(srcFile, destFile, true); ? Это попытка переопределить файл, если он уже существует
3. @NoConnection Это, вероятно, устраняет ошибку, но мне нужно знать, почему это происходит. Может возникнуть проблема, которая приведет к другим сбоям в будущем.
4. Много лет назад у меня были проблемы с файлом. Переместить команду из одного сетевого расположения в другое, даже потеряв файлы. Поэтому с этого времени я использовал только свою собственную реализацию, выполняя отдельное копирование и удаление, с промежуточными проверками, и никогда больше не сталкивался с проблемой…
5. @ShivamMishra Я использовал подход копирования удаления, предложенный Пойтером.