Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 流中的数据未写入文件_C#_Streamwriter - Fatal编程技术网

C# 流中的数据未写入文件

C# 流中的数据未写入文件,c#,streamwriter,C#,Streamwriter,我有一个小的导入例程,它从ftp源获取数据,解析它们,并使用lint-to-sql将数据写入数据库。这一切都是完美的工作,除了一部分,正在下载的文件不会保存在本地 该程序遵循以下步骤: 列出源上的所有文件 迭代所有文件 如果文件存在,请跳过 如果文件还不存在,请下载并解析 解析内容 保存到数据库 保存到文件(不工作) 文件在适当的文件夹中创建,但大小为0字节。 我哪里出错了 代码: FtpWebResponse responseFileDownload=(FtpWebResponse)reque

我有一个小的导入例程,它从ftp源获取数据,解析它们,并使用lint-to-sql将数据写入数据库。这一切都是完美的工作,除了一部分,正在下载的文件不会保存在本地

该程序遵循以下步骤:

  • 列出源上的所有文件
  • 迭代所有文件
  • 如果文件存在,请跳过
  • 如果文件还不存在,请下载并解析
  • 解析内容
  • 保存到数据库
  • 保存到文件(不工作)
  • 文件在适当的文件夹中创建,但大小为0字节。 我哪里出错了

    代码:

    FtpWebResponse responseFileDownload=(FtpWebResponse)requestFileDownload.GetResponse();
    尝试
    {
    使用(Stream responseStream=responseFileDownload.GetResponseStream())
    {
    使用(FileStream writeStream=newfilestream(localPath+“\\downloads\\”+FtpListing[i],FileMode.Create))
    {
    //未下载的数据在本地已作为平面文件存在
    //将数据从responsestream写入数据库
    使用(变量读取器=新的流读取器(responseStream))
    {
    //忽略第一行
    字符串headline=reader.ReadLine();
    #区域Linq到Sql逻辑|解析
    列表傻瓜=新列表();
    //阅读csv的其余部分
    使用(var context=new DataContext())
    {
    //逻辑删去
    //context.SubmitChanges();
    }
    }
    #端区
    响应团队位置=0;
    responseStream.CopyTo(writeStream);
    }
    }
    }
    

    提前谢谢

    可能是同样的问题:
    您正在尝试读取两次响应流。

    是否已逐步阅读了代码?处理StreamReader还将关闭底层流。i、 e.在到达CopyTo语句之前,responsestream已关闭。
    FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse();
    try
    {
        using (Stream responseStream = responseFileDownload.GetResponseStream())
        {
             using (FileStream writeStream = new FileStream(localPath + "\\downloads\\" + FtpListing[i], FileMode.Create))
             {
             //data which is not downloaded, already exists as a flatfile locally
             //write data from responsestream to db
                 using (var reader = new StreamReader(responseStream))
                 {
                     //ignore first line
                     string headline = reader.ReadLine();
                     #region Linq-To-Sql logic | Parsing
                     List<Messwert> fooList = new List<Messwert>();
                     //read rest of csv
                     using (var context = new DataContext())
                     {
                       //Logic edited out
                       //context.SubmitChanges();
                     }
                 }
                 #endregion
                 responseStream.Position = 0;
                 responseStream.CopyTo(writeStream);
             }
         }
     }