다음을 통해 공유


System.IO.FileStream 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스를 FileStream 사용하여 파일 시스템에서 파일을 읽고, 쓰고, 열고, 닫고, 파이프, 표준 입력 및 표준 출력을 비롯한 다른 파일 관련 운영 체제 핸들을 조작할 수 있습니다. , , 및 메서드를 Read사용하여 동기 작업을 수행하거나 ReadAsync, CopyToAsyncFlushAsyncWriteAsync및 메서드를 사용하여 비동기 작업을 수행할 수 있습니다.FlushCopyToWrite 비동기 메서드를 사용하여 기본 스레드를 차단하지 않고 리소스를 많이 사용하는 파일 작업을 수행합니다. 이 성능 고려 사항은 시간이 걸리는 스트림 작업이 UI 스레드를 차단하여 앱이 작동하지 않는 것처럼 보일 수 있는 Windows 8.x 스토어 앱 또는 데스크톱 앱에서 특히 중요합니다. FileStream 는 더 나은 성능을 위해 입력 및 출력을 버퍼링합니다.

Important

이 형식이 구현 하는 IDisposable 인터페이스입니다. 형식을 사용 하 여 마쳤으면 직접 또는 간접적으로의 삭제 해야 있습니다. 직접 형식의 dispose 호출 해당 Dispose 의 메서드를 try/catch 블록입니다. 삭제 하지 직접, 언어 구문 같은 사용 using (C#에서) 또는 Using (Visual Basic에서는). 자세한 내용은 "를 사용 하는 개체는 구현 IDisposable" 섹션을 참조 하세요.를 IDisposable 인터페이스 항목입니다.

이 속성은 IsAsync 파일 핸들이 비동기적으로 열렸는지 여부를 검색합니다. 또는 매개 변수가 있는 생성자를 사용하여 클래스의 FileStream 인스턴스를 isAsyncuseAsyncoptions 만들 때 이 값을 지정합니다. 속성이 있으면 스트림은 true겹치는 I/O를 사용하여 파일 작업을 비동기적으로 수행합니다. 그러나 속성은 IsAsync , WriteAsync또는 CopyToAsync 메서드를 호출ReadAsynctrue 필요가 없습니다. IsAsync 속성이 false 있고 비동기 읽기 및 쓰기 작업을 호출하는 경우 UI 스레드는 여전히 차단되지 않지만 실제 I/O 작업은 동기적으로 수행됩니다.

이 메서드는 Seek 파일에 대한 임의 액세스를 지원합니다. Seek 를 사용하면 파일 내의 모든 위치로 읽기/쓰기 위치를 이동할 수 있습니다. 이 작업은 바이트 오프셋 참조 지점 매개 변수를 사용하여 수행됩니다. 바이트 오프셋은 열거형의 세 멤버 SeekOrigin 가 나타내는 대로 시작, 현재 위치 또는 기본 파일의 끝일 수 있는 검색 참조 지점을 기준으로 합니다.

참고 항목

디스크 파일은 항상 임의 액세스를 지원합니다. 생성 CanSeek 시 속성 값은 기본 파일 형식으로 true 설정되거나 false 기본 파일 형식에 따라 설정됩니다. winbase.h CanSeek 에 정의된 대로 기본 파일 형식이 FILE_TYPE_DISK 경우 속성 값은 .입니다 true. 그렇지 않으면 속성 값은 CanSeek .입니다 false.

프로세스가 파일의 일부로 종료되거나 미해결 잠금이 있는 파일을 닫으면 동작이 정의되지 않습니다.

디렉터리 작업 및 기타 파일 작업은 , DirectoryPath 클래스를 File참조하세요. 이 File 클래스는 주로 파일 경로를 기반으로 개체를 만들기 FileStream 위한 정적 메서드가 있는 유틸리티 클래스입니다. 클래스는 MemoryStream 바이트 배열에서 스트림을 만들고 클래스와 비슷합니다 FileStream .

일반적인 파일 및 디렉터리 작업 목록은 일반적인 I/O 작업을 참조 하세요.

스트림 위치 변경 검색

FileStream 개체의 핸들에 배타적 보류가 없는 경우 다른 스레드는 파일 핸들에 동시에 액세스하고 파일 핸들과 연결된 운영 체제의 파일 포인터 위치를 변경할 수 있습니다. 이 경우 개체의 캐시된 위치 FileStream 와 버퍼의 캐시된 데이터가 손상될 수 있습니다. 개체는 FileStream 캐시된 버퍼에 액세스하는 메서드에서 검사 정기적으로 수행하여 운영 체제의 핸들 위치가 개체에서 사용하는 FileStream 캐시된 위치와 동일한지 확인합니다.

메서드 호출 Read 에서 핸들 위치의 예기치 않은 변경이 감지되면 .NET은 버퍼의 내용을 카드 파일에서 스트림을 다시 읽습니다. 이는 파일의 크기 및 파일 스트림의 위치에 영향을 줄 수 있는 다른 프로세스에 따라 성능에 영향을 줄 수 있습니다.

메서드 호출 Write 에서 핸들 위치의 예기치 않은 변경이 감지되면 버퍼의 내용이 dis카드ed되고 예외가 IOException throw됩니다.

FileStream 개체가 핸들 SafeFileHandle 을 노출하기 위해 속성에 액세스하거나 FileStream 개체에 해당 생성자의 속성이 제공 SafeFileHandle 되면 해당 핸들에 배타적 보류가 없습니다.