Я думаю, что это из-за папки, которую я создал, но я не могу найти решение.
Неправильно Directory.CreateDirectory
вызовет исключение, если ононе могу создать его, когда он еще не существует.
Так что давайте решать проблемы, которые у вас есть
\\Originals\\
не делайте этого, если вам нужен обратный слешиспользуйте @ \Originals\
- Если вы собираетесь объединить путь, используйте
Path.Combine
- Не используйте
for
, когда вы можете использовать foreach
- не было необходимости создавать так много списков и циклов
- если вы создаете изображение, вам нужно располагать его
- И самый большой из них, doне попытайтесь сохранить файл поверх файла с дескриптором открытого файла.
В такие моменты вам нужно отступить от своего кода и удалить всю избыточность.Большая часть вашего кода была абсолютно не нужна, и это делает вашу жизнь более трудной для отладки
foreach (var file in openFileDialog.FileNames)
{
var name = Path.GetFileName(file);
var path = Path.GetDirectoryName(file);
var newPath = Path.Combine(path, "Originals");
var newName = $"{Path.GetFileNameWithoutExtension(name)}.jpg";
Directory.CreateDirectory(newPath);
var newFullPath = Path.Combine(newPath, name);
// why do anything fancy when you just want to move it
File.Move(file, newFullPath);
// lets open that file from there, so we don't accidentally cause the same
// problem again, then save it
using (var image = Image.FromFile(newFullPath))
image.Save(Path.Combine(path, newName), ImageFormat.Jpeg);
}
Хотя я не уверен, в чем заключалась ваша настоящая проблема, я предполагаю, что это был метод GetImageFormat
, или выпытались перезаписать файл с открытой ручкой.Однако, в духе того, что я думаю, вы пытаетесь достичь, это, вероятно, просто сработает