2010-03-25 6 views
0

나는 그것을 XML 파일을 새로 만들어 쓰기 위해 노력하고 있어요 : 내가 뭘.NET : 새 파일을 만들 때 사용 권한에 대한 IOException?

The process cannot access the file 'C:\path\to\Data\test.xml' because it is being used by another process. 

:

C:\path\to\Data\test.xml 

예외는 다음과 같습니다에

FileStream output = File.Create(Path.Combine(PATH_TO_DATA_DIR, fileName)); 

인수는 평가 여기서 뭐라구?

UPDATE :

StreamWriter writer = new StreamWriter(Path.Combine(PATH_TO_DATA_DIR, fileName)); 

UPDATE : 2 : 내가 파일 시스템에 존재하지 않는 만들려고하고 파일이 코드가 같은 예외가 발생. 그러면 어떻게 사용할 수 있습니까?

업데이트 3 : 새 파일 이름으로 바뀌 었습니다. 이유가 확실하지 않습니다. 아마 나는 첫 번째 호출에서 그것을 만들지 못한 것을 알았지 만 후속 호출에서 실패했을까요?

답변

0

메시지는 다른 프로세스가 해당 파일을 사용 중임을 나타냅니다. 열려있는 경우 스트림을 사용하거나 스트림이 제대로 닫히지 않은 경우 스트림을 원래 만들 때 사용할 수 있습니다.

먼저 열지 않았는지 확인하십시오. fileName을 변경하고 동일한 오류가 발생하는지 확인하려고합니다. 코드에서 일부 장소와 동일한 오류가 발생하는 경우 파일을 완료했을 때 스트림을 닫지 않습니다.

+0

위에서 설명한 것처럼이 코드가 실행되기 전에 파일이 파일 시스템에 존재하지 않습니다. 다른 프로세스가 그것을 사용하고 있습니까? –

+0

내 답변 내에서 의미했던 것입니다. 데이비드 Basarab 그것을 명확하게 만들었습니다. =) –

0

프로그램은 FileStream 객체로 돌아가려면 파일을 만든 후에 파일에 핸들을 유지합니다. 당신이 그것에 대한 접근을 지정하지 않았기 때문에 아마도 당신이 그 접근을 허락하지 않을 것입니다. 아마도 그것을 닫은 다음, 어떻게 열 것인지 (ReadOnly, ReadWrite, WriteOnly)를 지정하여 적절한 방식으로 다시 열어야합니까?

+0

이 파일을 닫을 수 없습니다. 파일을 처리하지 못했습니다. –

+0

그러면 이미 존재하는 파일을 만드는 것처럼 들립니다. –

0

모욕하지 않으려 고하지만 폴더가 존재합니까? 파일이 이미 있지만 시스템에 의해 숨겨져 있습니까? 그리고 프로그램을 실행하는 사용자 계정에 폴더에 대한 쓰기 권한이 있습니까? `File.Create()`가 예외를 던지고 있기 때문에 File.WriteAllText(<path>, "Testing")과 같은 특정 파일을 작성하려고 시도한 적이 있습니까? File.Create?

관련 문제