문제

스트림 리더를 사용하여 파일을 읽으려고하지만 항상 다른 프로세스에서 사용 중이므로이 오류가 발생합니다.

프로세스는 다른 프로세스에서 사용하기 때문에 ' arfjwknasgmed17 c $ flag 조건 cp-arfjn-flag.xls 파일에 액세스 할 수 없습니다.

복사하지 않고 이것을 읽을 수있는 방법이 있습니까? 아니면 그게 내 유일한 옵션인가요?

도움이 되었습니까?

해결책

파일을 열린 프로그램이 해당 파일에 대한 첫 번째 지정된 읽기 공유 권한을 사용하는 경우에만 파일을 읽을 수 있습니다.

파일에 실제로 읽기 공유 권한이 없다면 처음에 파일을 복사 할 수 없습니다.

이미 파일이 열린 프로그램의 공유 권리와 충돌하는 공유 권리를 지정하는 경우 파일에 액세스하지 못할 수 있습니다. 예를 들어 이미 개설 된 프로그램이 Write Access를 부여하지 않으면 쓰기 액세스 권한을 부여 할 수 없습니다.

첫 번째 파일을 열었던 프로그램이 VSS (Volume Shadow Copy)를 지원하는 경우 VSS를 사용하여 파일에 액세스 할 수도 있습니다.

사용중인 경우에도 이러한 파일에 액세스 할 수있는 상용 소프트웨어 드라이버가 있습니다. ST-Bernards에서 Open File Manager를 얻을 수 있었으며 사용할 수도 있습니다. 파일 액세스 관리자 (FAM) Visionworks Solutions Inc.에 의해이 드라이버는 일반적으로 제품에 포함시키기 위해 소프트웨어 회사를 백업하기 위해 OEM을 제공합니다.

VSS는 다른 프로그램이 파일에서 읽고 싶은 파일에 이미 열린 프로그램을 알려 주면서 작동합니다. VSS는 파일의 사본을 수행 하고이 사본을 읽을 수 있습니다. VSS는 레거시 애플리케이션에서는 작동하지 않습니다.

FAM은 독점적으로 열고 잠긴 파일에 액세스 할 수있는 응용 프로그램의 '허용 목록'을 지정하여 유산 및 비 수술 프로그램에 투명하게 작동합니다. 이 목록의 프로그램만이 파일에 액세스 할 수 있습니다. 파일이 열리면 캐시 모드로 이동하여 파일의 '백업/열기'가 시작될 때와 같이 파일의 사본을 얻을 수 있습니다. 이 시점에서 원래 파일을 열었던 프로그램은 파일을 실제로 그대로보고, 허용 된 목록의 두 번째 프로그램은 파일의 '열기/백업'이 발생했을 때와 같이 파일을 볼 수 있습니다. 이것은 파일의 일관성을 보장합니다.

다른 팁

아래 코드를 사용해보십시오.

FileStream fileStr = File.Open(<full file name>, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
fileStream = new StreamReader(fileStr);

Windows XP에서 시도했습니다. 다른 프로세스로 파일이 이미 쓰기 모드에서 열려있는 경우 공유 권한을 지정하지 않은 경우 여전히 읽기 모드에서 파일을 열 수 있습니다.

면책 조항 : 작동하지만 생산 코드에서 사용해야하는지 확실하지 않습니다. 아직 작동해야한다는 공식적인 문서를 찾을 수 없습니다.

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