ftpStream = response.GetResponseStream();
byte[] buffer = new byte[4096];
int bytesRead = 0;
long totalBytesRead = 0;
bool hasSymbol = false;
int headerBytesRead = 0;
byte[] headerBuffer = null;
string symbol = "UNB,BATCH_ID";
if (!string.IsNullOrEmpty(symbol))
{
string[] symbol_array = symbol.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
// 先读取前10个字符进行检查
headerBuffer = new byte[10];
headerBytesRead = ftpStream.Read(headerBuffer, 0, 10);
if (headerBytesRead > 0)
{
string headerText = Encoding.UTF8.GetString(headerBuffer, 0, headerBytesRead);
foreach (string item in symbol_array)
{
if (headerText.Contains(item))
{
hasSymbol = true;
break;
}
}
}
}
// 如果不包含symbol,终止下载
if (!hasSymbol)
{
throw new Exception("文件不包含指定的symbol,下载终止");
}
// 包含symbol,开始下载
// 先写入已读取的前10个字节
localFileStream.Write(headerBuffer, 0, headerBytesRead);
totalBytesRead += headerBytesRead;
// 继续读取剩余内容
while ((bytesRead = ftpStream.Read(buffer, 0, buffer.Length)) > 0)
{
localFileStream.Write(buffer, 0, bytesRead);
totalBytesRead += bytesRead;
}