使用(READTOEND)未将对象引用设置为对象的实例

时间:2013-04-09 00:33:43

标签: c#

我有以下代码使用ftp下载txt文件并写回另一个文件。

 ftp = (FtpWebRequest)WebRequest.Create("ftp://" + ftpHost + ftpDIR + "/SAPValidObjects.txt");
 ftp.Method = WebRequestMethods.Ftp.DownloadFile;
 ftp.UseBinary = false;
 ftp.Credentials = new NetworkCredential(ftpUserID, ftpPWD);
 FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
 Stream sResponse = response.GetResponseStream();
 StreamReader srSAPCostObjects = new StreamReader(sResponse);
 m_swSAPCostCentres.Write(srSAPCostObjects.ReadToEnd());
 m_swSAPCostCentres.Close();
 response.Close();

 m_swSAPCostCentres = new StreamWriter(Properties.Settings.Default.SAPInt + @"\SAPCostCentres" + ".txt");

由于某种原因,它会在

处抛出异常
 m_swSAPCostCentres.Write(srSAPCostObjects.ReadToEnd());

我不确定为什么,有人请指导我。

2 个答案:

答案 0 :(得分:2)

  

可能是typo,但你是initializing m_swSAPCostCentres   在你引用它之后。这可能是问题吗?

答案 1 :(得分:1)

我想问题是您尝试编写的文件已经存在并由另一个应用程序打开。

尝试删除文件:

Properties.Settings.Default.SAPInt + @"\SAPCostCentres" + ".txt"

如果存在,则在尝试再次创建之前。

在你的代码中,你还应该添加一个try catch,并确保使用using语句来包装一次性对象,或者在catch或finally块中调用close方法,以便始终关闭流和其他对象。