2011-01-13 4 views
45

System.IO.File.Create를 사용하여 파일을 만듭니다. 나는 그것을 스트림 작가와 함께 쓰지 않고있다.System.IO.File.Create 파일 잠금

응용 프로그램이 새로 만든 파일을 열려고 할 때 프런트 엔드에 서버 오류가 발생합니다. 파일이 사용 중입니다. 그런 다음 쓰레기 수거가 진행되고 몇 분 후에 모두 OK가됩니다.

이제 Streamwriter를 사용하고 있다면 닫아야 할 것입니다. 같은 것을 만들기에도 적용됩니까?

파일을 스트림 작성기로 열어 읽은 다음 바로 닫으면이 문제가 해결되지만 읽히지 않으면 지저분 해 보입니다. 더 간단한 방법이 있습니까?

+0

것은 이제 내가 그 예상하지 못했을 것입니다 코드 – Kev

답변

64

File.CreateFileStream을 반환합니다. 다음과 같이 사용해야합니다.

using (FileStream fs = File.Create(path)) 
{ 
    //you can use the filstream here to put stuff in the file if you want to 
} 
+1

를 보자. – Traubenfuchs

11

파일을 만들면 FileStream이 열리므로 잠급니다 (File.CreateFileStream을 반환합니다).

파일에 액세스하려면이 스트림을 닫아야합니다. 이것은 최고의 using 문을 사용하여 수행됩니다

using(FileStream fs = File.Create(path)) 
{ 
} 
1

Create 메서드는 파일 핸들을 반환합니다. 파일을 다시 사용하기 전에 파일 핸들을 닫아야합니다. 자세한 내용은 MSDN 문서 File.Create Method (String)을 참조하십시오.

요약 :

이 방법에 의해 생성 된 파일 스트림 오브젝트 없음 파일 공유 디폴트 값을 갖는다; 원본 파일 핸들이 닫힐 때까지 다른 프로세스 나 코드가 생성 된 파일에 액세스 할 수 없습니다.

8

File.Create을 사용하면 FileStream이 반환됩니다. 스트림을 닫거나 FileStream 개체가 처리 될 때까지 (가비지 수집기의 finalizer에 의해) 개체는 열려 있고 잠긴 상태로 유지됩니다.

using(FileStream fs = File.Create(filename)) 
{ 
    // Do stuff like write to the file 
} 

using 문은 "문법 설탕"이고 컴파일러가 기능적으로 동일 코드 생성됩니다 :

FileStream fs = File.Create(filename) 
try 
{ 
    // Do stuff like write to the file 
} 
finally 
{ 
    fs.Dispose(); 
} 

FileStreamIDisposable은 그래서 당신은 다음과 같은 작업을 수행 할 수 구현 Dispose 메서드는 내부적으로 Close을 호출합니다.

1

내가 사용 :이 방법은 생성하고 (파일을 닫습니다 참고 System.IO.File.WriteAllText(sFullFileName, "Uploading");

: 나는을 넣어 내가 지금 사용

이 이 System.IO.File.Create(sFullFileName);

.Create 방법은 파일을 닫는되지 않았습니다 문자열 "업로드 중"파일에,하지만 난 string.Empty도 작동합니다 확신합니다.

80

이 시도 :

System.IO.File.Create(FullFName).Close(); 
+1

빈 파일 만 만들려는 경우에 적합합니다. – TTT

+1

그건 사실입니다! "나는 스트림 작가와 함께 그것을 쓰지 않고, 단지 그것을 창조한다." –

+0

이것은 내가 찾고있는 것이 었습니다. 빈 파일로 매력을 일하십시오. 감사. –