C#Path.GetTempPath返回“找不到路径的一部分”错误

时间:2009-09-11 17:34:36

标签: c#

我从ftp服务器下载文件并将其保存到Path.GetTempPath()中定义的目录;但是,我收到以下错误:无法找到路径的一部分。

我已确认返回的路径是正确的:C:\ Users \ [username] \ AppData \ Local \ Temp。

SYSTEM,Administrators和[username]都可以完全控制该目录。我认为临时目录的意思是它可以保存给任何人/每个人保存,但为了以防万一,我也给了NETWORK SERVICE修改权限。 (我假设这是ASP.NET Dev服务器使用的用户名,但我不确定。)

我在Vista上使用VS 08。

这是我的代码:

FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(
    ConfigurationManager.AppSettings["FTPServer"] + "//" + fileName);

downloadRequest.Credentials = new NetworkCredential(
    ConfigurationManager.AppSettings["FTPUsername"],
    ConfigurationManager.AppSettings["FTPPassword"]);

downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;

FtpWebResponse downloadResponse = 
    (FtpWebResponse)downloadRequest.GetResponse();

try
{
    Stream downloadStream = downloadResponse.GetResponseStream();

    if (downloadStream != null) 
    {
        logger.Info("File Download status: {0}", 
            downloadResponse.StatusDescription);

        StreamReader downloadReader = new StreamReader(downloadStream);

        try
        {
            if (downloadReader != null)
            {

                StreamWriter downloadWriter = 
                    new StreamWriter(Path.GetTempPath());
                downloadWriter.AutoFlush = true;
                downloadWriter.Write(downloadReader.ReadToEnd());
            }
        }
        finally
        {
            if (downloadReader != null)
            {
                downloadReader.Close();
            }
        }
    }
}
finally
{
    if (downloadResponse != null)
    {
        downloadResponse.Close();
    }
}

我真的很感激我在这里做错了什么想法。

谢谢!

2 个答案:

答案 0 :(得分:5)

在我看来,您需要在临时路径的末尾添加文件名。试试这个:

StreamWriter downloadWriter =
    new StreamWriter(Path.Combine(Path.GetTempPath(), fileName));

答案 1 :(得分:2)

StreamWriter downloadWriter = 
                    new StreamWriter(Path.GetTempPath());

您尝试在目录而不是文件上打开StreamWriter。如果您想要临时文件名,请改用Path.GetTempFileName()

StreamWriter downloadWriter = 
                    new StreamWriter(Path.GetTempFileName());

无论是那个,还是做Skinniest Man所说的。