[c#] FileStream 대 / 차이점 StreamWriter?

질문:

사이에 다른 무엇 FileStreamStreamWriter닷넷 ?

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

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



답변

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 ()하면됩니다.


답변

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


답변

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

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

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


답변

글쎄, MSDN에서 FileStream:

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

및 MSDN StreamWriter:

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

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

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

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

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


답변

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

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

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


답변

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


답변