检查共享网络驱动器上是否可以访问文件

时间:2010-10-06 12:49:13

标签: c# file networking file-io

我有一个程序执行不同的操作,我的问题与网络映射驱动器或共享文件夹中的访问文件有关

程序可以从网络运行文件msi / exe(网络映射驱动器或共享文件夹) 程序可以从网络(网络映射驱动器或共享文件夹)复制文件

在尝试运行或复制之前如何检查文件是否可访问(如果网络断开连接或任何其他网络问题)?

File.Exists();

来说已经足够了

这是我的代码示例:

public static bool FileIsOk(string path)
{
   try
   {
      FileInfo finfo = new FileInfo(path);

      if (finfo.Exists)
      {
         return true;
      }
      MessageBox.Show("file does not exist, or there is a problem with the network preventing access to the file!");
      return false;
   }

   catch (Exception e)
   {
      MessageBox.Show(e.Message);
   }
   return false;
}

感谢

3 个答案:

答案 0 :(得分:5)

File.Exists()应该没问题,但是如果你开始一个大型的复制操作,如果在这个过程中连接断开,你就无法做很多事情,因此你需要确保为此编码。

你应该抓住IOException并按照你认为合适的方式处理它。

编辑:捕获IOException的代码:

try
{
   File.Copy(myLocalFile, myNetworkFile);
}
catch (IOException ioEx)
{
   Debug.Write(myLocalFile + " failed to copy!  Try again or copy later?");
}

答案 1 :(得分:3)

别。只是尝试操作。它会以同样快的速度失败,你不会引入时间窗口问题。无论如何,你必须应对这种失败,为什么要编码两次?

答案 2 :(得分:1)

当然,最好的想法是创建设置的本地缓存。您无法信任网络连接。它们可能在运行期间减速或中断。如果一切都是从网络运行的话,我会说,这绝对不是安全的想法。

但就技术问题而言,文件存在应该没问题。已经讨论了一个更具描述性的想法来检查文件的存在。 Read here

FileInfo fi = new FileInfo(@"\\server\share\file.txt");
bool exists = fi.Exists;