2011-01-21 8 views
0

私のウェブサイトでは、Yahooから来たCSVをダウンロードしようとしています。いくつかのデータが含まれています。WebサイトでCSVファイルをダウンロードするには

私は以下のコードを使用してCSVをダウンロードしています。

問題:

私はYahooのCSVからのすべてのデータをダウンロードして取得したいが、全体のCSVが私の側に作成取得されていません。

データの一部のみがコピーされます。そのため、CSVはすべてのデータと共にダウンロードされません。スクリーンショット以下に示すよう

私はバッファのサイズを大きくしようとしたが、それがYahooのCSVで

データの助けにはならなかったです。これは私が、私は以下に示すように、同じYahooの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です。したがって、ダウンロードしたファイルからは10274.52,"1/2という13文字しか保存されません。

inBuf.Lengthを使用して長さを取得できます。 Lengthはintを返すので、intにキャストする必要はありません。

+0

バッファ全体の長さはどのように取れますか? –

+0

ありがとうございます'inBuf.ToString()。Length'を'(int)inBuf.Length;に置き換えるだけでした。ありがとう、私の愚かな間違いでした。間違いを指摘してくれてありがとう。 –

関連する問題