콘솔 프로그램에 코드를 작성하고 파일을 테스트했습니다. 이제 특정 인터페이스를 구현하는 BizTalk 파이프 라인 구성 요소로 이식하려고합니다. 나는 파일에서 메모리 스트림으로의 .Write
과 .WriteLine
메소드가 너무 다르다는 것을 몰랐다. 나는 내 물건을 교환 할 수있을 것이라고 생각했다. .WriteLine
메서드가없고 .Write 메서드에는 오프셋과 바이트 (추가 매개 변수)가 필요합니다.C# FileStream.WriteLine을 MemoryStream으로 변환합니다.
그렇다면 .WriteLine 문이 많기 때문에 테스트 한 코드를 메모리 스트림에 쓰는 가장 좋은 방법은 무엇입니까? 먼저 StringBuffer에 쓸 수는 있지만 스트리밍 개념을 터뜨릴 수 있다고 생각합니다 (즉, 한 번에 전체 문서가 메모리에 저장 됨).
// This is how I used the streams in the Console program
//FileStream originalStream = File.Open(inFilename, FileMode.Open);
//StreamWriter streamToReturn = new StreamWriter(outFilename);
// This is how to get the input stream in the BizTalk Pipeline Componenet
System.IO.Stream originalStream = pInMsg.BodyPart.GetOriginalDataStream();
MemoryStream streamToReturn = new MemoryStream();
streamToReturn.WriteLine("<" + schemaStructure.rootElement + ">");
더 많은 코드가 여기에 표시되지 않습니다. 위는 내가 한 일의 무대를 설정하는 것입니다.
이전에 StreamWriter를 사용했기 때문에 고마워요. 사실 변수가 StreamWriter 일 때 변수를 스트림이라고했습니다. – NealWalters
나는 스트림이 아니라 StreamWriter의 .Flush도 가져야했다. 그렇지 않으면 실행되었지만 BizTalk 스트림에는 마지막에 누락 된 문자가있었습니다. – NealWalters
@NealWalters -'StreamWriter'가 쓰고있는 기본'Stream'으로 플러시 될 필요가 있기 때문에 수정합니다. – Igor