FileStream 대 / 차이점 StreamWriter?


85

질문:

사이에 다른 무엇 FileStream과 StreamWriter의 닷넷 ?

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

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

답변:


98

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

A FileStream는 Stream. 모든 스트림과 마찬가지로 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.