InnerWriter
은 TextWriter
입니다.이 클래스는 스트림에 씁니다. 해당 스트림을 열고 스트림을 읽어야합니다. 스트림에서 열어 읽을 수 있는지 여부는 공개적인 질문이며 스트림의 유형에 따라 크게 달라집니다.
예제를 사용하면 theWriter.InnerWriter
은 TextWriter
에서 파생 된 개체입니다. 그러나 어떤 종류인지 알지 못하며 TextWriter
자체가 기본 스트림을 노출하지 않습니다. InnerWriter
가 StreamWriter
경우
지금, 당신은 쓸 수 있습니다
var sWriter = theWriter.InnerWriter as StreamWriter;
var stream = sWriter.BaseStream;
var savePosition = stream.Position;
stream.Position = 0;
// now, you can read the stream
// when you're done reading the stream, be sure to reset its position
stream.Position = savePosition;
하기는 매우 조심해야하지만. 기본 스트림을 가져온 후 StreamReader
으로 열면 StreamReader
을 닫으면 기본 스트림이 닫힙니다. 그렇다면 HtmlTextWriter
은 다음에 쓰기를 시도 할 때 예외를 throw합니다.
스트림을 읽을 수도 없습니다. 예를 들어 기본 스트림이 NetworkStream
인 경우 읽을 수 없습니다. 또는 쓰기 전용으로 열린 FileStream
일 수 있습니다. 이 작업을 수행하는 일반적인 방법은 없습니다. 특정 TextWriter
파생 클래스뿐만 아니라 TextWriter
이 쓰는 스트림에도 전적으로 의존하므로이 작업을 수행하는 일반적인 방법은 없습니다.
예를 들어, HtmlTextWriter
마침내 MemoryStream
에 쓰는 GZipStream
에 접속 BufferedStream
에 접속되는 StreamWriter
에 기록 될 수있다.
따라서 일반적으로 문제에 대한 다른 해결책을 찾아 보시기 바랍니다. 기본 스트림이 무엇인지 확실히 알지 못하면 읽고 읽을 수 있습니다. 예기치 않게 변경되지 않습니다.
스트림을 읽는다면 (디버그 모드에서) 스트림 위치를 재설정해야 나중에 프로그램에서 사용할 수 있습니다 (심지어 디버그 모드에서 읽는 것조차도 IRL을 읽는 것처럼 작동합니다. life)) –
디버그 모드에서 어떻게 열고 열 수 있는지 예를 들려 줄 수 있습니까? – 4thSpace
@ 4thSpace : 업데이트 된 답변보기. –