كيف يمكنني منع هذا System.IO.IOException عند نسخ ملف؟
-
06-07-2019 - |
سؤال
وعند تشغيل التعليمات البرمجية التالية لاختبار نسخ الدليل، وأحصل على System.IO.IOException عندما يتم استدعاء أسلوب fileInfo.CopyTo. رسالة الخطأ: "العملية لا يمكن الوصول إلى الملف 'C: \ CopyDirectoryTest1 \ TEMP.TXT. لأنه قيد الاستخدام من قبل عملية أخرى"
ويبدو أن هناك تأمين على التنسيق file1 ( "C: \ CopyDirectoryTest1 \ TEMP.TXT") والذي يتم إنشاؤه بضعة أسطر أعلاه حيث يحدث الخطأ، ولكن أنا لا أعرف كيف لاطلاق سراح هذا إذا كان الأمر كذلك. أي أفكار؟
using System;
using System.IO;
namespace TempConsoleApp
{
class Program
{
static void Main(string[] args)
{
string folder1 = @"C:\CopyDirectoryTest1";
string folder2 = @"C:\CopyDirectoryTest2";
string file1 = Path.Combine(folder1, "temp.txt");
if (Directory.Exists(folder1))
Directory.Delete(folder1, true);
if (Directory.Exists(folder2))
Directory.Delete(folder2, true);
Directory.CreateDirectory(folder1);
Directory.CreateDirectory(folder2);
File.Create(file1);
DirectoryInfo folder1Info = new DirectoryInfo(folder1);
DirectoryInfo folder2Info = new DirectoryInfo(folder2);
foreach (FileInfo fileInfo in folder1Info.GetFiles())
{
string fileName = fileInfo.Name;
string targetFilePath = Path.Combine(folder2Info.FullName, fileName);
fileInfo.CopyTo(targetFilePath, true);
}
}
}
}
المحلول
File.Create
بإرجاع مفتوحة <ل أ href = "http://msdn.microsoft.com/en-us/library/system.io.filestream.aspx" يختلط = "noreferrer"> FileStream
- تحتاج إلى إغلاق هذا الدفق
فقط
using (File.Create(file1)) {}
وينبغي أن تفعل خدعة.
لا تنتمي إلى StackOverflow