2010-03-05 7 views
6

하나의 파일에 액세스해야하는 두 개의 다른 모듈이 있습니다 (하나는 ReadWrite Access - 다른 읽기 전용). 이 파일은 모듈 중 하나에 다음 코드를 사용하여 열 :FileStream : 다른 프로세스 오류로 사용됨

FileStream fs1 = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.Read); 

번째 문제는 다음과 같은 코드를 사용하여 동일한 파일을 열려고 시도하는 동안 두 번째 모듈이 실패 할 수 있습니다 :

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read); 

해야합니까를 여기에 몇 가지 추가 보안 매개 변수를 설정해야합니까?

답변

22

열려 있기 때문에 실패합니다 당신은 현명한 원래하여 FileStream 앞뒤로 내기 ... 그것을 다시 바로 발리슛을 쓸 수 없을 것

FileShare.ReadWrite 다른

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

로 설정해야합니다 두 개의 스트림을 치다, 다른 사람이 필요로하는 것을 돌려 주도록하십시오.

+0

+1 : 확인됐지만 그 이유는 모르겠습니다. 두 번째 파일이 열려있는 동안 첫 번째 FileStream을 저장할 수 있습니까? – A9S6

+0

빠른 테스트를 통해 처음에는 스트림을 닫고 다른 하나는 닫고 CanRead 상태는 true를 반환합니다. – curtisk

0

filestreamname.Open();을 사용해야합니다. 및 filestreamname.close(); 명령은 비동기 적으로 파일을 읽고 쓸 수 없기 때문에 같은 파일을 읽고 쓰는 2 개의 파일 스트림을 사용할 때 명령을 사용합니다.

+2

-1 : 완전히 잘못된 정보. –

0

는 두 번째 FileStream을 열 때, 당신은 또한 그렇지 않으면 독점적 인 액세스를 열려고합니다, FileShare.Read를 지정해야하고, 파일이 이미에만 파일을 읽하여 FileStream에

+0

시도했지만 작동하지 않았다 : FileStream fs = new FileStream (@ "D : \ post.xml", FileMode.Open, FileAccess.Read, FileShare.Read); – A9S6