سؤال

لديّ تطبيق يمكن أن يجعل تعديل الصور. في بعض الحالات ، هذا يجعل الملفات أصغر ، في بعض الحالات أكبر.

لا يحتوي البرنامج على خيار "عدم استبدال الملف إذا كانت النتيجة تحتوي على ملفات أكبر".

لذلك كتبت تطبيق C# صغير لمحاولة حل هذا.

بدلاً من الكتابة فوق الملفات ، أجعل التطبيق يكتب النتيجة إلى مجلد تحت المجال الحالي واسم اختبار المجلد هذا.

يقوم تطبيق C# الذي كتبته بمقارنة الاستيلاء على محتويات كلا المجلدين ويضع المسار الكامل للملف (الملفات) في كائنين قائمة. ثم أقارن واستبدال.

الاستبدال لا يعمل. أحصل على ioexception التالية:

غير قادر على إزالة الملف المراد استبداله

الموقع على القيادة الصلبة الخارجية ، ولدي حقوقه الكاملة.

الآن ، أعلم أنه يمكنني فقط القيام بالملف. لماذا هذا الإعداد المعين لن يعمل.

هذا هو رمز المصدر: http://pastebin.com/4VQ82UMU

ونعم ، الملف المحدد كوسيطة الأخيرة لوظيفة استبدال موجودة.

هل كانت مفيدة؟

المحلول

تحقق من أن ملفك الذي سيتم استبداله لم يتم تحميله في الذاكرة ، مما قد يتسبب في قفل في الملف

حاول استخدام عبارة باستخدام للتخلص تلقائيًا من المورد ،

وفقا للوثائق:

إذا كان DestinationBackUpFilename على محرك أقراص مختلف ، فلا تتم إزالته كما ينص الوثائق ، بدلاً من ذلك يتم إلقاء ioException برسالة "غير قادر على إزالة الملف المراد استبداله." هذا خطئ

http://msdn.microsoft.com/en-us/library/9d9h163f.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top