FileStream 대 / 차이점 StreamWriter?


85

질문:

사이에 다른 무엇 FileStreamStreamWriter닷넷 ?

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

이 두 가지를 하나로 결합 할 수 있습니까?

답변:


98

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

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

A StreamWriter : TextWriter는 스트림 데코레이터입니다. TextWriter는 string 또는 char과 같은 텍스트 데이터를 인코딩 byte[]한 다음 연결된 Stream.

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

byte[]데이터 가있을 때 베어 FileStream을 사용합니다 . StreamWriter텍스트를 쓰고 싶을 때 추가 합니다. Formatter 또는 Serializer를 사용하여 더 복잡한 데이터를 작성합니다.

이 두 가지를 하나로 결합 할 수 있습니까?

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


4
또한 FileStream특히 파일에 맞게 조정 된 스트림 유형 이라는 점에 유의해야 합니다. 스트림은 기본적으로 바이트로 작동하지만 StreamWriter/ Reader는 s 뿐만 아니라 모든 스트림에서 텍스트를 쓰고 / 읽습니다 FileStream. 예를 들어, MemoryStreams, NetworkStreams, 등
iliketocode

19

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


14
사실, 그것은 "전부"가 아닙니다 ... 그러나 그것은 하나의 정확한 차이점입니다.
David

14

FileStream은 명시 적으로 작업 파일을위한 것입니다.

StreamWriter는 네트워크 소켓, 파일 등 모든 유형의 스트림 으로 스트리밍하는 데 사용할 수 있습니다 .

ScottGu는 여기에서 다양한 Stream 개체를 매우 멋지게 설명합니다. http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223


1
랜덤 액세스 R / W 스트림을 다루지는 않지만 스트림에 대한 훌륭한 참조. 특히 직렬화 / 역 직렬화 정보와 비 파일 스트림의 데모는 매우 유용합니다. 한
ThunderGr

7

글쎄, MSDN에서 FileStream:

파일 주위에 Stream을 노출하여 동기 및 비동기 읽기 및 쓰기 작업을 모두 지원합니다.

및 MSDN StreamWriter:

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

가장 분명한 차이점은 FileStream읽기 / 쓰기 작업 을 허용하는 반면 StreamWriter쓰기 전용이라는 것입니다.

StreamWriter페이지가 추가로 진행한다 :

StreamWriter는 특정 인코딩의 문자 출력용으로 디자인 된 반면 Stream에서 파생 된 클래스는 바이트 입력 및 출력용으로 디자인되었습니다.

두 번째 차이점은 FileStream바이트에 대한 것이고 StreamWriter텍스트에 대한 것입니다.


6

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

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

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


0

한 가지 주요 차이점 (위의 설명 외에도)은 FileStream이 임의의 디스크 액세스 액세스를 지원하여 지정된 FileStream.Position에 대한 읽기 및 쓰기를 지원한다는 것입니다. 대용량 파일 수정의 경우 매우 유용 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.