【问题标题】:Overwrite xml file on network drive覆盖网络驱动器上的 xml 文件
【发布时间】:2020-12-10 06:56:15
【问题描述】:

我想编辑一个 xml 文件。我可以在本地驱动器上打开、编辑和保存(覆盖)文件。

我可以打开和编辑网络驱动器上的文件。我也可以将它保存到新路径,但我无法覆盖文件。

    Dim localPath As String = "C:\...\file.xml" 'works

    Dim networkPath As String = "Y:\...\file.xml"   'doesnt work
    Dim networkPath2 As String = "\\my.network.local\...\file.xml" 'doesnt work

    Dim doc As XElement
    doc = XElement.Load(networkPath)

    doc.Save(networkPath)

当我尝试保存时出现此异常:System.IO.IOException: "The request is not supported."

感谢您的帮助。

【问题讨论】:

  • 您不能在本地处理它并将其移动/复制回网络吗?
  • 是的,如果问题没有解决方案,我会这样做。但我已经有一个相当大的项目,我必须做出很多改变。
  • 您对文件有写权限吗?你是管理员吗? VS 不会以管理员身份自动运行。您必须右键单击快捷方式并选择以管理员身份运行。如果您是管理员,则需要在路径名中使用美元符号来授予管理员权限。
  • 我是管理员,对驱动器具有写入权限。比如我可以正常覆盖一个txt文件。以管理员身份运行,美元符号显示没有区别。
  • 错误只发生在存档时?能不能去网盘上的文件用记事本打开然后保存?

标签: xml vb.net linq xelement network-drive


【解决方案1】:

遇到同样的问题

...writeAllLines(...)

我的解决方案:

  1. 创建原始文件的备份文件(file.bak.xml)

  2. 删除原文件

  3. 保存新文件

  4. 成功了吗?是 -> 删除 bak 文件; no-> 将 bak 文件作为原始文件获取

     If File.Exists(path) = False Then
    
         doc.Save(path)
    
     Else
             Dim temp As String = path & ".bak.xml"
             File.Move(path, temp)
    
             Try
                 doc.Save(path)
                 File.Delete(temp)
             Catch ex As Exception
                 File.Move(temp, path)               
             End Try
    
         End If
    

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多