파일을 복사 할 때이 system.io.ioexception을 어떻게 방지합니까?

StackOverflow https://stackoverflow.com/questions/267830

  •  06-07-2019
  •  | 
  •  

문제

디렉토리 복사를 테스트하기 위해 다음 코드를 실행하면 fileinfo.copyto 메소드가 호출되면 System.io.ioexception을 얻습니다. 오류 메시지는 다음과 같습니다. "프로세스는 다른 프로세스에서 사용하기 때문에 파일 'C : CopyDirectoryTest1 temp.txt'에 액세스 할 수 없습니다."

파일 1 ( "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 개방을 반환합니다 FileStream - 그 스트림을 닫아야합니다.

단지

using (File.Create(file1)) {}

트릭을해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top