심심해서 C#으로 NUnrar 을 다루다가 열린 RAR파일을 수정 삭제가 불가능 해지는 문제를 발견했습니다.
문제
NUnrar으로 RarArchive.Open("경로") 를 사용하여 파일을 여는 경우
다른 프로세스에서 사용중이라 나오고
System.IO 을 이용한 Move 등 파일을 수정하려 하면 에러가 발생
해결
스트림이 열려 닫히지 않는다는 점이 걸려
Open의 오버로드 함수들을 확인하여 해결
RarArchive archive = RarArchive.Open(fileName);
// 위의 string 으로 경로를 주는 방식이 아닌
// 아래의 FileStream 을 이용
FileStream fs = new FileStream(fileName, FileMode.Open);
RarArchive archive = RarArchive.Open(fs);
...
fs.Close();
RarArchive.Open을 사용할 시 string을 이용하지 않고 FileStream을 통해 열어주고
파일의 사용이 끝났다면 FileStream을 직접 Close로 닫아주면 해결됩니다.
즐코딩
반응형