В целом это работает, но иногда я получите следующее исключение:
FileStream было предложено открыть устройство, которое не было файлом. Для поддержки
таких устройств, как «com1:» или «lpt1:», вызовите CreateFile, а затем используйте
конструкторы FileStream, которые принимают дескриптор ОС в качестве IntPtr.
Stacktrace — в Microsoft. Win32.Win32Native.SafeCreateFile(String
lpFileName, Int32 dwDesiredAccess, FileShare dwShareMode,
SECURITY_ATTRIBUTES securityAttrs, FileMode dwCreationDisposition,
Int32 dwFlagsAndAttributes, IntPtr hTemplateFile) в
System .IO.FileStream. Init(String path, FileMode mode, FileAccess
доступ, права Int32, логическое значение useRights, общий ресурс FileShare, Int32
bufferSize, параметры FileOptions, SECURITY_ATTRIBUTES secAttrs, String
msgPath, логическое значение bFromProxy, логическое значение useLongPath, Логический checkHost)
в System.IO.FileStream..ctor (строковый путь, режим FileMode, доступ FileAccess
, общий ресурс FileShare, Int32 bufferSize, параметры FileOptions, String
msgPath, Логическое значение bFromProxy, логическое значение useLongPath, логическое значение checkHost)
в System.IO.StreamReader..ctor (путь к строке, кодирование кодировки,
логическое значение обнаруженияEncodingFromByteOrderMarks, Int32 bufferSize, логическое значение
checkHost) в System.IO.StreamReader..ctor(путь к строке, кодировка Encoding
) в System.IO.File.InternalReadAllLines(путь к строке,
кодировка кодировки) в System.IO.File.ReadAllLines(путь к строке )
Однако, глядя на имя файла и путь, я не ожидал, что выдаст такую ошибку (например, com1.txt)
\\xxx.xxx.xxx.xxx\mbftp\4392-24979.ORD
Все имена файлов имеют один и тот же формат [аккаунт]-[номер заказа].ORD, номера аккаунтов всегда состоят из 4 цифр.
Вот код, который выдает ошибку:
Код: Выделить всё
try
{
if (Directory.Exists(GetElementValue("FTPOrderFolder")))
{
if (File.Exists(fullOrderFilename))
{
if (File.GetLastAccessTime(fullOrderFilename) < DateTime.Now.AddSeconds(-2))
{
order = File.ReadAllLines(fullOrderFilename);
if (order.Length > 0)
{
File.Delete(fullOrderFilename);
NLogHelper.Debug(this, $"Deleted order file : {fullOrderFilename}");
return order;
}
}
}
}
}
catch (Exception ex)
{
NLogHelper.HandledException(this, ex);
}
Подробнее здесь: https://stackoverflow.com/questions/493 ... not-a-file