FileStream被要求打开不是文件的设备

问题描述 投票:7回答:1

我正在监视FTP文件夹中的订单,然后在删除文件之前将其读入字符串数组以进行进一步处理。

总体上是可行的,但偶尔会出现以下异常:

FileStream被要求打开不是文件的设备。为了支持对于“ com1:”或“ lpt1:”之类的设备,请调用CreateFile,然后使用将OS句柄作为IntPtr的FileStream构造函数。Stacktrace-在Microsoft.Win32.Win32Native.SafeCreateFile(StringlpFileName,Int32 dwDesiredAccess,FileShare dwShareMode,SECURITY_ATTRIBUTES securityAttrs,FileMode dwCreationDisposition,Int32 dwFlagsAndAttributes,IntPtr hTemplateFile)在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess访问,Int32权限,布尔useRights,FileShare共享,Int32bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串msgPath,布尔bFromProxy,布尔useLongPath,布尔checkHost)在System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess访问,FileShare共享,Int32 bufferSize,FileOptions选项,字符串msgPath,布尔bFromProxy,布尔useLongPath,布尔checkHost)在System.IO.StreamReader..ctor(字符串路径,编码编码,布尔值detectEncodingFromByteOrderMarks,Int32 bufferSize,布尔值checkHost)位于System.IO.StreamReader..ctor(字符串路径,编码)编码)位于System.IO.File.InternalReadAllLines(字符串路径,编码编码)位于System.IO.File.ReadAllLines(字符串路径)

但是,查看文件名和路径,我没想到会引发这样的错误(例如com1.txt)

\\ xxx.xxx.xxx.xxx \ mbftp \ 4392-24979.ORD

所有文件名的格式都相同[account]-[orderno] .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);
}

这不是一个经常出错的事实,我无法解决。我仅在上次访问后2秒钟访问该文件,因此可以确定它不是锁定的东西。它似乎显示正在处理的订单文件有30%,其中70%正常运行而没有错误。

c# filestream file.readalllines
1个回答
-1
投票

这是一个旧帖子,但是我们有同样的问题。这个问题有什么解决办法吗?我们尝试读取网络路径上的XML文件,例如\ SOME_SERVER \ FileDepot \ abc.xml。大多数时候我们可以毫无问题地阅读。但有时我们会收到此异常“要求FileStream打开不是文件的设备”。我很感激,如果您找到了解决问题的方法,@ MarkBrad

© www.soinside.com 2019 - 2024. All rights reserved.