我有一个程序执行不同的操作,我的问题与网络映射驱动器或共享文件夹中的访问文件有关
程序可以从网络运行文件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;
}
感谢
答案 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;