2011-02-10 10 views
65

질문 :FileStream 대/차이 StreamWriter?

dotnet의 FileStream과 StreamWriter의 차이점은 무엇입니까?

어떤 컨텍스트를 사용해야합니까? 장점과 단점은 무엇입니까?

이 둘을 하나로 결합 할 수 있습니까?

답변

79

dotnet의 FileStream과 StreamWriter의 차이점은 무엇입니까?

FileStreamStream입니다. 모든 스트림과 마찬가지로 byte[] 데이터 만 처리합니다.

StreamWriter : TextWriter은 스트림 데코레이터입니다. TextWriter는 문자열 또는 문자 같은 텍스트 데이터를 byte[]으로 인코딩 한 다음 연결된 Stream에 씁니다.

어떤 컨텍스트를 사용해야합니까? 장점과 단점은 무엇입니까?

byte[] 데이터가있을 때 맨손 FileStream을 사용합니다. 텍스트를 쓸 때 StreamWriter을 추가합니다. 더 복잡한 데이터를 쓰려면 Formatter 나 Serializer를 사용하십시오.

이 둘을 하나로 결합 할 수 있습니까?

예. StreamWriter를 만들려면 항상 Stream이 필요합니다. 도우미 메서드 System.IO.File.CreateText("path")을 조합하여 만든 다음 외부 작성자 만 Dispose()를 수행하면됩니다.

+1

또한 'FileStream'은 파일 유형에 맞게 특별히 고안된 유형의 스트림이라는 점에 유의해야합니다. 스트림은 기본적으로 바이트로 작업하지만 'StreamWriter'/ Reader는'FileStream'뿐만 아니라 * 모든 스트림에 텍스트를 쓰거나 읽습니다. 예를 들어'MemoryStreams','NetworkStreams' 등이 있습니다. – iliketocode

18

FileStream은 bytes를 쓰고 StreamWriter는 텍스트를 씁니다. 그게 다야.

+11

사실, 그것은 "모든"것이 아닙니다 ... 그러나 그것은 하나의 정확한 차이입니다. – David

7

음, MSDN에서 FileStream에 대한 : 등

ScottGu 아주 잘 여기에 다른 스트림 객체를 설명, 네트워크 소켓, 파일 -

A는 StreamWriter는이 Stream의 모든 유형에 스트리밍 할 수 있습니다 :

동기식 및 비동기 읽기 및 쓰기 작업을 모두 지원하는 파일 주위에 스트림을 노출합니다.

StreamWriter에 대한 MSDN

:

는 특정 인코딩의 스트림에 문자를 쓰기위한 TextWriter를를 구현합니다.

가장 명백한 차이는 FileStream은 읽기/쓰기 작업을 허용하고 StreamWriter은 쓰기 전용입니다.

StreamWriter 페이지는 추가로 진행 : 스트림으로부터 유도 클래스 바이트의 입출력을 위해 설계되는 반면

StreamWriter를는 특정 인코딩 문자 출력을 위해 설계된다.

두 번째 차이점은 FileStream은 바이트이고, StreamWriter은 텍스트입니다.

5

알려진 데이터 소스에 정보를 출력하는 데 사용되는 두 가지 레벨입니다.

FileStream은 일종의 Stream이며, 개념적으로는 특정 위치를 가리키고 그 위치에서 수신 및/또는 나가는 데이터를 처리 할 수있는 메커니즘입니다. 파일, 네트워크 연결, 메모리, 파이프, 콘솔, 디버그 및 추적 수신기 및 몇 가지 다른 유형의 데이터 원본에 대한 읽기/쓰기 스트림이 있습니다. 특히 파일 시스템에 대한 읽기 및 쓰기 작업을 수행하는 FileStream이 있습니다. 대부분의 스트림은 사용량이 매우 낮으며 데이터를 바이트로 처리합니다.

StreamWriter는 스트림을 사용하여 일반 텍스트를 출력하는 것을 단순화하는 Stream의 래퍼입니다. 바이트 대신 문자열을 취하는 메소드를 노출하고 바이트 배열에서 필요한 변환을 수행합니다. 다른 작가들이 있습니다. 다른 주요한 것은 XML 형식으로 데이터를 쓰는 것을 용이하게 해주는 XmlTextWriter입니다. Writer와 마찬가지로 스트림을 랩핑하고 데이터를 다시 가져 오는 것을 돕는 Reader 대응 물도 있습니다.

0

위의 설명과 다른 중요한 차이점 중 하나는 FileStream이 임의의 디스크 읽기를 지원하고 지정된 FileStream.Position에 쓰기가 가능할 수 있다는 것입니다. 대용량 파일 수정의 경우 매우 중요합니다.