2011-02-25 2 views
1

가능한 중복 :
Read file which is in use?C#에서 열리는 파일을 읽는 방법?

나는 .. mvvp - WPF aplication을 그리고 파일을 읽을 Infragistics의를 사용합니다. 파일이 열릴 때 .. 그리고 응용 프로그램을 통해 파일을 읽으려고하면 예외가 발생합니다.

이 문제를 해결하는 한 가지 방법은 파일을 닫으라는 것입니다.

다른 해결책이 있습니까?

미리 감사드립니다.

+0

좋은 질문이지만 이미 답변이있는 것 같습니다. 위의 링크를 참조하십시오. –

+1

infragistics는 파일을 읽으려고합니까? –

+0

그것은 조금 다릅니다 - 나는 infragistics를 사용하고 있습니다. 내 대답을 참조하십시오 – Relativity

답변

3

최소 권한으로 열어 봅니다 (예 : 배타적 읽기 또는 쓰기 잠금을 요청하지 마십시오.

1

당신이 시도 할 수 :

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, System.IO.FileShare.ReadWrite) 

가 아닌 단독 모드에서 파일을 엽니 다.

1

예외의 유형은 여기에 도움이,하지만 내가 할 수있는라고하는 것은 이것이다 수 :

  • 원하는 액세스 : 프로그램이이 OpenFile API에 두 개의 매개 변수를 제공하는 파일을 열 때 읽기, 쓰기 모두 ?
  • 공유 모드 : 독점, 공유 읽기, 공유 쓰기, 공유 삭제?

파일이 처음 열리는 방식에 따라 두 번째 열 수도 있고 안 열 수도 있습니다. 예를 들어 공유 모드로 열어 본 경우 두 번째 열 수는 없습니다 다른 일을 할 시간.

0

일부 검색 후이 문제의 해결 방법을 찾았습니다. 파일 이름과 FileMode.Open, FileAccess.Read, FileShare.ReadWrite를 매개 변수로 사용하여 FileStream 개체를 만듭니다.

Excel이 실행 중일 때 XLS 파일에 쓰기 잠금을 유지하고 파일을 열어 놓은 것처럼 보이므로 ReadWrite 파일 공유 모드에서 파일을 열어야합니다.

이 FileStream 개체를 파일 이름 대신 매개 변수로 Workbook.Load 메서드에 전달할 수 있으므로 프로그램은 파일이 Excel에서도 열리는 동안 파일을 읽을 수 있습니다.

FileStream selectedFileStream = new FileStream(currentFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
Workbook internalWorkBook = Workbook.Load(selectedFileStream); 
+0

미래에 귀하의 질문에 모든 관련 정보를 포함하면 도움이 될 것입니다. 예를 들어 열려고 한 파일이 Excel에서 열렸습니다. –

+0

감사합니다. – Relativity