0

在我的网站中,我正在尝试下载来自 Yahoo 的 CSV。它包含一些数据。

我正在使用下面给出的代码下载 CSV。

问题:

我想从 Yahoo 的 CSV 下载并获取所有数据,但我并没有创建整个 CSV。

仅复制部分数据。因此 CSV 不会连同其所有数据一起下载。

我尝试增加缓冲区大小,但这没有帮助

雅虎 CSV 中的数据如下图所示。这是我要下载的数据

替代文字

当我下载相同的雅虎 CSV 时,我在创建的 CSV 中获得的数据如下所示。

替代文字

我用来从 Yahoo 下载 CSV 的代码

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!";

有什么问题?

4

1 回答 1

1

inBuf.ToString()给你“System.Byte []”,该字符串的长度是 13。所以你只保存 13 个字符,这只会 10274.52,"1/2从下载的文件中给你。

您可以使用inBuf.Length. 请注意,Length 返回一个 int,因此您无需转换为 int。

于 2011-01-21T07:01:27.693 回答