HTTP 스트림을 C #의 파일에 저장

스테판 매 그누 슨

HTTP 응답으로 XML 응답을 받고 있는데 잘 작동합니다. 이제 나중에 사용하기 위해 디스크에 저장하려고합니다. C #에서 스트림을 파일에 저장하는 방법에 설명 된 두 번째 방법을 사용하려고합니다 . (첫 번째 방법도 얻지 못했습니다). 파일이 생성되었지만 비어 있습니다.

Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);

XmlDocument events = new XmlDocument();
events.Load(reader);

var fileStream = File.Create("C:\\XMLfiles\\test.xml");
CopyStream(dataStream, fileStream);
fileStream.Close();

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[8 * 1024];
    int len;
    while ((len = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, len);
    }
}
...보다 나은

이것은 까다로운 상황입니다. 문제는 당신이 HttpResponseStream이미 읽었다는 것 입니다. 결과적으로 당신은 스트림의 끝입니다. 정상적인 상황에서는 dataStream.Position = 0. 그러나 여기서는 그렇게 할 수 없습니다. PC에있는 파일에 대해 이야기하는 것이 아니라 네트워크 스트림이므로 "뒤로 이동할 수 없습니다 (이미 전송 됨)". 결과적으로 원본 스트림을 다시 작성하는 대신 XmlDocument.

Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);

XmlDocument events = new XmlDocument();
events.Load(reader);
events.Save("C:\\XMLfiles\\test.xml");

이 경우 XmlDocument네트워크 스트림을 다시 읽으려고하지 않고 에 복사 된 데이터를 저장하기 때문에 작동 합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

숫자의 텍스트 파일을 읽고 C ++의 정수 배열에 저장

Int 데이터를 C ++의 텍스트 파일에 저장

C++의 텍스트 파일에 여러 출력 저장

C # 리치 텍스트 상자의 내용을 파일에 저장

C#의 메모리 스트림에 저장하지 않고 대용량 파일/BLOB 읽기 및 복사

savefiledialog의 스트림을 C #으로 저장

2 차원 c # 배열의 내용을 csv 파일에 저장

c ++- "std :: vector <unsigned char>"의 내용을 파일에 저장

이진 파일을 읽고 c의 구조체에 저장

Cmd 출력을 C #의 txt 파일에 저장

익스프레스 / 노드 앱의 파일에 HTTP GET 응답 저장

배열 / 스트링 스트림 C ++에 오디오 파일 저장

배열 / 스트링 스트림 C ++에 오디오 파일 저장

http 클라이언트를 사용하여 gitolite 호스팅 git 저장소의 파일에 직접 액세스

c의 변수에 파일의 끝 비트 만 저장하는 방법

NSMutableArray의 내용을 파일에 저장

파일의 값을 배열에 저장

txt 파일의 줄을 csv에 저장

nodejs의 스트림을 사용하여 http 응답에 여러 파일 쓰기

텍스트 파일의 열을 배열에 저장

텍스트 파일의 입력을 배열에 저장

splice()의 출력을 텍스트 파일에 저장

os.system의 출력을 텍스트 파일에 저장

JComboBox의 항목을 텍스트 파일에 저장

텍스트 파일의 내용을 배열에 저장

목록 상자의 항목을 텍스트 파일에 저장

일부 pdf 파일을 C #의 db에 저장된 이메일 첨부 파일로 보내기

사용자 입력을 텍스트 파일 C ++에 저장

9 비트 값의 스트림을 C 파일에 바이트로 쓰기

TOP 리스트

  1. 1

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  2. 2

    상황에 맞는 메뉴 색상

  3. 3

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  4. 4

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  5. 5

    std :: regex의 일관성없는 동작

  6. 6

    Ionic 2 로더가 적시에 표시되지 않음

  7. 7

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  8. 8

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  9. 9

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  10. 10

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  11. 11

    SQL Server-현명한 데이터 문제 받기

  12. 12

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  13. 13

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  14. 14

    내 페이지 번호의 서식을 어떻게 지정합니까?

  15. 15

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  16. 16

    Quickly 프로그램과 함께 작동하도록 Eclipse를 어떻게 설정할 수 있습니까?

  17. 17

    인코더없이 Azure 미디어 서비스 비디오 트림

  18. 18

    WSL 및 Ubuntu, 초기화 파일 이동 방법

  19. 19

    OpenCV에서. C ++ 컴파일러는 간단한 테스트 프로그램을 컴파일 할 수 없습니다. Clang ++ 사용

  20. 20

    마우스 휠 JQuery 이벤트 핸들러에 대한 방향 가져 오기

  21. 21

    ViewModel에서 UI 요소를 비동 시적으로 업데이트하는 방법

뜨겁다태그

보관