How to identify whether folder is opened?

后端 未结 3 1440
小鲜肉
小鲜肉 2021-01-18 14:57

In my application I\'m trying to rename the folder, but if the folder is opened in Windows Explorer I get an IOException. How can I identify whether folder is

相关标签:
3条回答
  • 2021-01-18 15:03

    It is not reasonable to determine if a program has a folder open in such a way that prevents you from renaming it. Because immediately after you make the determination, another process could start or stop using the folder. Instead just do the operation and catch the resulting exception.

    try {
      Directory.Move("old","new");
      return true;
    } catch ( IOException ) {
      return false;
    }
    
    0 讨论(0)
  • 2021-01-18 15:13

    catch the IOException?

    As others have said, just try to do what you want, catch the exception if it happens and take appropriate action, whatever that is in your context.

    You don't really have much choice as I see it, consider:

    bool iHaveAccess = CheckAccess(folder);
    if (iHaveAccess)
    {
        RenameFolder(folder,newFolderName);
    }
    

    what happens if between CheckAccess succeeding and calling RenameFolder something else locks the folder? Whatcha gonna do then?

    0 讨论(0)
  • 2021-01-18 15:24

    after a little searching I found this post and this post which show various techniques for how you can programatically determine which process has locked a file. One of those should allow you to check if explorer has the folder locked.

    0 讨论(0)
提交回复
热议问题