我有一些内部使用的实用程序类,它从 FTP 服务器下载文件。过去,所有这些都是纯文本文件,并且可以正常工作。但是,我们现在有一些我想要下载的压缩文件。当此文件在本地写入时,大小从 ~80 Kb 变为 ~140 Kb。为什么文件在写入过程中损坏?为什么这不适用于普通文本文件?要使此代码适用于所有文件类型,需要进行哪些更改?
private static string GetFile(string file, bool inBound)
{
string path;
if (inBound)
path = Config.settings["FTPIn"] + file;
else
path = Config.settings["FTPOut"] + file;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(path);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(Config.Settings["FTPUser"], Config.Settings["FTPPass"]);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
string file_contents = System.String.Empty;
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
try
{
file_contents = reader.ReadToEnd();
}
catch (Exception e)
{
ResultLogger.LogVerbose(trGuid, "Exception while getting file from FTP share.");
ResultLogger.LogVerbose(trGuid, e.Message);
ResultLogger.LogVerbose(trGuid, e.StackTrace);
}
reader.Close();
response.Close();
}
}
return file_contents;
}
请注意,没有运行时错误(至少在其他一些代码尝试解压缩文件之前不会),文件只是在写入过程中被损坏。
另外,调用代码如下;
string file_contents = GetFile(fileName, inBound);
File.WriteAllText(@".\" + fileName, file_contents);
return new FileInfo(@".\" + fileName);