2011-01-21 4 views
0

내 웹 사이트에서 야후에서 제공하는 CSV를 다운로드하려고합니다. 여기에는 몇 가지 데이터가 포함되어 있습니다.웹 사이트에서 CSV 파일을 다운로드하는 방법

아래 코드를 사용하여 CSV를 다운로드하고 있습니다.

문제 :을 다운로드하고 내 옆에 만들어지고되지 야후의 CSV하지만 전체 CSV에서 모든 데이터를 가져 오기 할

.

데이터의 일부만 복사됩니다. 따라서 CSV는 모든 데이터와 함께 다운로드되지 않습니다.

나는 버퍼 크기를 증가하려고하지만의 스크린 샷 아래에 표시되는 야후의 CSV에서

데이터 도움이되지 않았다. 이것은 내가 아래 그림과 같은 야후의 CSV가 다운로드 할 때, 내가 만든 CSV 얻을

alt text

데이터를 다운로드 할 데이터입니다.

alt text

코드 내가 틀릴 수도 무엇

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://download.finance.yahoo.com/d/quotes.csv?s=^DJI+^N225+^GSPC+^GDAXI+^FCHI+^HSI+^IXIC+^FTSE&f=l1d14n"); 
     HttpWebResponse ws = (HttpWebResponse)wr.GetResponse(); 
     Stream str = ws.GetResponseStream(); 
     inBuf = new Byte[10000000]; 
     int bytesToRead = Convert.ToInt32(inBuf.ToString().Length); 

     int bytesRead=0; 
     while(bytesToRead>0) 
     { 
      int n = str.Read(inBuf,bytesRead,bytesToRead); 
      if(n==0) 
      { 
       break; 
      } 
      bytesRead += n; 
      bytesToRead -= n; 
     } 
     FileStream fstr = new FileStream("C:\\VSS Working Folder\\20th Jan 11 NewHive\\NewHive\\CSV\\new.csv", FileMode.OpenOrCreate, FileAccess.Write); 
     fstr.Write(inBuf,0,bytesRead); 
     str.Close(); 
     fstr.Close(); 
     return "CSV Downloaded Successfully!"; 

야후에서 CSV를 다운로드하기 위해 사용하고?

+0

스프레드 시트가 아닌 텍스트 편집기에서 CSV를 여는 경우 어떻게됩니까? –

+0

@Kirk : 메모장에서 열면이 '10274.52, 1/2'과 같은 것을 볼 수 있습니다. 무엇이 잘못 될 수 있습니까? –

답변

1

inBuf.ToString()은 "System.Byte []"를 제공하며 해당 문자열의 길이는 13입니다. 따라서 13 문자 만 저장하면 다운로드 한 파일에서 10274.52,"1/2 만 제공됩니다.

inBuf.Length을 사용하여 길이를 가져올 수 있습니다. Length는 int를 반환하므로 int로 형변환 할 필요가 없습니다.

+0

그래, 전체 버퍼 길이는 어떻게 되나요? –

+0

감사합니다. 'inBuf.ToString(). Length '를'(int) inBuf.Length;'로 대체 할 필요가 있었기 때문에 고마워요. 내 실수는 어리석은 실수였습니다. 실수를 지적 해 주셔서 감사합니다. –