Я использую метод Peek () StreamReader, чтобы проверить, нужно ли обрабатывать больше строк.В моем файле более 1000 строк, но Peek () неожиданно возвращает -1, когда достигает строки # 750.Я проверил, но, кажется, нет различий между строкой № 750 и № 751.Даже если я удалил строки 750 и 751, они все равно будут разбиты на другую строку.
Ниже приведены мои коды для вашей информации:
try
{
String ftpserver = ftp + filename;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpserver));
reqFTP.UsePassive = false;
reqFTP.UseBinary = true;
reqFTP.Proxy = null;
reqFTP.Credentials = new NetworkCredential(username, password);
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
response = (FtpWebResponse)reqFTP.GetResponse();
stream = response.GetResponseStream();
reader = new StreamReader(stream, ConfigHelper.MyEncoding);
while (reader.Peek() > -1)
{
string x = reader.ReadLine();
if (x != null)
{
//.......
}
}
}
catch (Exception ex)
{
}
finally
{
if (reader != null)
reader.Close();
if (response != null)
response.Close();
}
Я пытался while ((x = reader.ReadLine()) != null)
, но исключение«Невозможно получить доступ к удаленному объекту» было выброшено.
Наконец я понял это с помощью: while (stream.CanRead && (x = reader.ReadLine()) != null)