질문:
사이에 다른 무엇 FileStream
과 StreamWriter
의 닷넷 ?
어떤 컨텍스트를 사용해야합니까? 그들의 장점과 단점은 무엇입니까?
이 두 가지를 하나로 결합 할 수 있습니까?
답변:
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 ()하면됩니다.
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
특히 파일에 맞게 조정 된 스트림 유형 이라는 점에 유의해야 합니다. 스트림은 기본적으로 바이트로 작동하지만StreamWriter
/ Reader는 s 뿐만 아니라 모든 스트림에서 텍스트를 쓰고 / 읽습니다FileStream
. 예를 들어,MemoryStreams
,NetworkStreams
, 등