我从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();
}
}
我真的很感激我在这里做错了什么想法。
谢谢!
答案 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所说的。