내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

파일 및 스트림 I/O

파일 및 스트림 I/O(입/출력)는 저장 매체로 데이터를 전송하거나 저장 매체로부터 데이터를 전송 받습니다. .NET Framework에서 System.IO 네임스페이스는 데이터 스트림과 파일에서 읽기 및 쓰기를 동기적 및 비동기적으로 사용하는 형식을 포함합니다. 이러한 네임스페이스는 파일의 압축 및 압축 풀기 기능을 수행하는 형식 및 파이프 및 직렬 포트를 통한 통신을 가능하도록 하는 형식을 포함합니다.

파일은 정돈되고 이름이 지정된 컬렉션의 바이트이며, 이 컬렉션에는 영구 저장소가 있습니다. 사용자가 파일을 사용할 때, 디렉터리 경로, 디스크 저장소 및 파일과 디렉터리 이름을 다룹니다. 반대로, 스트림은 여러 가지 저장 매체 중 하나인 백업 저장소(예를 들어, 디스크 또는 메모리)에서 읽고 사용할 수 있는 바이트 시퀀스입니다. 디스크 외에 여러 백업 저장소가 존재하듯이, 파이프 스트림 외에 여러 종류의 스트림, 예를 들어 네트워크, 메모리, 파일 스트림도 존재합니다.

사용자는 이 형식들을 System.IO 네임스페이스에서 파일 및 디렉터리와 상호 작용하기 위해 사용할 수 있습니다. 예를 들어, 파일 및 디렉터리에 대한 속성을 가져오고 설정할 수 있고, 검색 조건에 따라 파일 및 디렉터리의 컬렉션을 검색할 수 있습니다.

다음은 몇 가지 흔히 사용되는 파일 및 디렉터리 클래스입니다.

  • File - 파일 만들기, 복사, 삭제, 이동 및 열기를 위한 정적 메서드를 제공하고 FileStream 개체 만들기를 지원합니다.

  • FileInfo - 파일 만들기, 복사, 삭제, 이동 및 열기를 위한 인스턴스 메서드를 제공하고 FileStream 개체 만들기를 지원합니다.

  • Directory - 디렉터리와 하위 디렉터리를 통해 만들고, 이동하고, 열거하기 위한 정적 메서드를 제공합니다.

  • DirectoryInfo - 디렉터리와 하위 디렉터리를 통해 만들고, 이동하고, 열거하기 위한 인스턴스 메서드를 제공합니다.

  • Path - 플랫폼 간에 호환되는 방식으로 디렉터리 문자열을 처리하기 위한 메서드와 속성을 제공합니다.

Visual Basic 사용자는 이러한 클래스를 사용하는 것 외에도, 파일 I/O에 대한 Microsoft.VisualBasic.FileIO.FileSystem 클래스에서 제공하는 메서드와 속성을 사용할 수 있습니다.

방법: 디렉터리 복사 , 방법: 디렉터리 목록 만들기방법: 디렉터리 및 파일 열거를 참조하십시오.

추상 기본 클래스 Stream은 바이트 읽기 및 쓰기를 지원합니다. 스트림을 나타내는 모든 클래스는 Stream 클래스로부터 상속됩니다. Stream 클래스와 이 클래스에서 파생되는 클래스는 데이터 소스와 리포지토리의 일반 뷰를 제공하고, 이때 프로그래머는 운영 체제 및 내부 장치의 세부 사항에서 격리됩니다.

스트림에는 다음의 세 가지 기본 작업이 포함됩니다.

  • 읽기 - 스트림의 데이터를 바이트 배열과 같은 데이터 구조로 전송합니다.

  • 쓰기 - 데이터 소스에서 스트림으로 데이터를 전송합니다.

  • 검색 - 스트림 내에서 현재 위치를 쿼리하고 수정합니다.

내부 데이터 소스 또는 리포지토리에 따라 스트림에서 이러한 기능 중 일부만 지원할 수도 있습니다. 예를 들어, PipeStream 클래스는 검색을 지원하지 않습니다. CanRead , CanWrite, CanSeek 스트림 속성은 스트림이 지원하는 작업을 지정합니다.

다음은 몇 가지 자주 사용되는 스트림 클래스입니다.

  • FileStream – 파일을 읽고 쓰는 데 사용됩니다.

  • IsolatedStorageFileStream – 격리된 저장소의 파일을 읽고 파일에 기록하는 데 사용됩니다.

  • MemoryStream – 메모리를 백업 저장소로 읽고 여기에 기록하는 데 사용됩니다.

  • BufferedStream – 읽기 및 쓰기 작업의 성능을 향상시키는 데 사용됩니다.

  • NetworkStream – 네트워크 소켓을 통한 읽기 및 쓰기를 지원합니다.

  • PipeStream – 익명 및 명명된 파이프를 통한 읽기와 쓰기를 지원합니다.

  • CryptoStream – 데이터 스트림을 암호화 변환에 연결하는 데 사용됩니다.

스트림의 비동기화 작업에 대한 예제는 비동기 파일 I/O를 참조하십시오.

또한 System.IO 네임스페이스는 스트림으로부터 인코딩된 문자를 읽고 이를 스트림에 쓰기 위한 형식을 제공합니다. 일반적으로 스트림은 바이트 입력 및 출력용으로 디자인됩니다. 판독기 및 작성기 형식은 스트림 작업을 완료할 수 있도록 인코딩된 문자와 바이트의 변환을 처리합니다. 각 판독기 및 작성기 클래스는 스트림과 연결되어 있고, 이것은 클래스의 BaseStream 속성을 통해 검색될 수 있습니다.

일부 자주 사용되는 판독기 및 작성기 클래스는 다음과 같습니다.

  • BinaryReader BinaryWriter – 기본 데이터 형식을 바이너리 값으로 읽고 쓰는 데 사용됩니다.

  • StreamReader StreamWriter – 인코딩 값을 사용하여 바이트에서 문자, 문자에서 바이트로 변환함으로써 문자를 읽고 쓰는 데 사용됩니다.

  • StringReader StringWriter – 문자열에서 문자를, 문자에서 문자열을 읽고 쓰는 데 사용됩니다.

  • TextReader TextWriter – 이진 데이터가 아닌 문자 및 문자열을 읽고 쓰는 다른 판독기와 작성기에 대한 추상 기본 클래스로 사용됩니다.

방법: 파일의 텍스트 읽기 , 방법: 파일에 텍스트 쓰기, 방법: 문자열에서 문자 읽기방법: 문자열에 문자 쓰기를 참조하십시오.

많은 양의 데이터를 읽거나 쓸 때 리소스가 많이 사용될 수 있습니다. 이러한 작업은 응용 프로그램 사용자에게 응답을 유지해야 하는 경우 비동기적으로 수행해야 합니다. 동기 I/O 작업에서 UI 스레드는 리소스 집약적인 작업이 완료될 때까지 차단됩니다. Windows 스토어 응용 프로그램을 개발할 때 비동기 I/O 작업을 사용하여 응용 프로그램이 작동을 멈춘 것처럼 보이지 않게 해줍니다.

비동기 멤버의 이름에는 Async가 포함됩니다(예: CopyToAsync, FlushAsync, ReadAsyncWriteAsync 메서드). 이러한 메서드는 asyncawait 키워드와 함께 사용합니다.

자세한 내용은 비동기 파일 I/O를 참조하십시오.

압축은 저장소에 맞춰 파일 크기를 줄이는 프로세스를 가리킵니다. 압축 해제는 압축된 파일의 내용을 사용 가능한 형식으로 추출하는 프로세스입니다. System.IO.Compression 네임스페이스는 파일 및 스트림을 압축하고 압축을 푸는 형식을 포함합니다.

다음 클래스는 파일과 스트림을 압축하고 압축 해제할 때 자주 사용됩니다.

  • ZipArchive – zip 보관 파일에 항목을 만들고 이를 검색하는 데 사용됩니다.

  • ZipArchiveEntry – 압축된 파일을 표시할 때 사용됩니다.

  • ZipFile – 압축된 패키지를 만들고 추출하고 여는 데 사용됩니다.

  • ZipFileExtensions – 압축된 패키지에 항목을 만들고 추출하는 데 사용됩니다.

  • DeflateStream – Deflate 알고리즘을 사용하여 스트림을 압축 및 압축 해제하는 데 사용됩니다.

  • GZipStream – gzip 데이터 형식의 스트림을 압축 및 압축 해제하는 데 사용됩니다.

방법: 파일 압축 및 추출 을 참조하십시오.

격리된 저장소는 코드와 저장된 데이터를 연결하는 표준화된 방법을 정의하여 격리와 안전을 제공하는 데이터 저장소 메커니즘입니다. 저장소는 사용자, 어셈블리 및 도메인(옵션)에 의해 격리된 가상 파일 시스템을 제공합니다. 격리된 저장소는 응용 프로그램에 사용자 파일을 액세스할 수 있는 권한이 없는 경우 특히 유용합니다. 컴퓨터의 보안 정책에 의해 제어되는 방식으로 응용 프로그램에 대한 설정이나 파일을 저장할 수 있습니다.

격리된 저장소는 Windows 스토어 응용 프로그램에 사용할 수 없습니다. 대신에, Windows.Storage 네임스페이스의 응용 프로그램 데이터 클래스를 사용합니다. 자세한 내용은 Windows 개발자 센터에서 응용 프로그램 데이터를 참조하십시오.

다음의 클래스는 격리된 저장소를 구현할 때 자주 사용됩니다.

격리된 저장소 를 참조하십시오.

Windows 스토어 앱용 .NET에는 스트림에서 읽고 스트림에 쓰기 위한 다양한 형식이 포함됩니다. 하지만, 이 세트에 모든 .NET Framework I/O 형식이 포함되는 것은 아닙니다.

다음은 Windows 스토어 응용 프로그램에서 I/O 작업을 사용할 때 알아야 할 몇 가지 중요한 차이점입니다.

필요하다면 .NET Framework 스트림과 Windows 런타임 스트림 간에 변환할 수 있습니다. 자세한 내용은 방법: .NET Framework 스트림과 Windows 런타임 스트림 간 변환 또는 WindowsRuntimeStreamExtensions를 참조하십시오.

Windows 스토어 응용 프로그램에서 I/O 작업에 대한 자세한 내용은 Windows 개발자 센터에서 퀵 스타트: 파일 읽기 및 쓰기를 참조하십시오.

System.IO 네임스페이스에서 클래스를 사용할 때, 파일 및 디렉터리에 대한 액세스를 제어하기 위해 액세스 제어 목록(ACL)과 같은 운영 체제 보안 요구 사항을 따라야 합니다. FileIOPermission 요구 사항에 이 요구 사항이 추가됩니다. ACL은 프로그래밍 방식으로 관리할 수 있습니다. 자세한 내용은 방법: 액세스 제어 목록 항목 추가 또는 제거ACL 기술 개요를 참조하십시오.

기본 보안 정책은 인터넷 또는 인트라넷 응용 프로그램에서 사용자의 컴퓨터에 있는 파일의 액세스를 방지합니다. 따라서 실제 파일의 경로를 인터넷이나 인트라넷을 통해 다운로드되는 코드를 작성할 때 필요한 I/O 클래스를 사용하지 마십시오. 대신에 기존의 .NET Framework 응용 프로그램의 경우 격리된 저장소를 사용하거나 Windows 스토어 응용 프로그램의 경우 응용 프로그램 데이터를 사용합니다.

스트림이 생성될 때만 보안 검사가 수행됩니다. 따라서 스트림을 열지 말고, 이것을 신뢰할 수 없는 코드 또는 응용 프로그램 도메인으로 전달합니다.

제목

설명

공통적인 I/O 작업

파일, 디렉터리 및 스트림과 관련된 I/O 작업 목록과 각 작업에 대한 예제 및 관련 내용에 대한 링크를 제공합니다.

비동기 파일 I/O

비동기 I/O의 기본 연산 및 성능상의 이점에 대해 설명합니다.

격리된 저장소

코드와 저장된 데이터를 연결하는 표준화된 방법을 정의하여 격리와 안전을 제공하는 데이터 저장소 메커니즘에 대해 설명합니다.

.NET Framework의 파이프 작업

.NET Framework에서 익명 사용자와 명명된 파이프 작업에 대해 설명합니다.

메모리 매핑된 파일

가상 메모리의 디스크에 있는 파일의 내용을 포함하는 메모리 매핑된 파일에 대해 설명합니다. 메모리 매핑된 파일을 사용하면 매우 큰 파일을 편집하고 프로세스 간 통신을 위한 공유 메모리를 만들 수 있습니다.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft