如何使用 If Not File.Exists 覆盖现有的 XML 文件
Posted
技术标签:
【中文标题】如何使用 If Not File.Exists 覆盖现有的 XML 文件【英文标题】:how to overwrite and existing XML file using If Not File.Exists 【发布时间】:2012-11-19 22:12:06 【问题描述】:我正在尝试覆盖现有的 XML 文件。如果文件存在,它不会被覆盖。我在这里检查一下。为什么不被覆盖。我错过了什么?
这是我的代码
Dim settings As New XmlWriterSettings()
settings.Indent = True
Dim FilePath As String = "\\server02\me_public$\audits\alert-special-reports.xml"
If Not File.Exists(FilePath) Then
Dim writer As XmlWriter = XmlWriter.Create(FilePath, settings)
writer.WriteStartDocument()
writer.WriteStartElement("audits")
writer.WriteStartElement("alert-special-reports")
writer.WriteElementString("title", "Alert and Special Reports")
writer.WriteElementString("rsslink", "http://www.me.org/rss/alert-special-reports.xml")
While dr.Read()
writer.WriteStartElement("item")
writer.WriteElementString("title", dr.GetString(dr.GetOrdinal("Title")))
writer.WriteElementString("description", dr.GetString(dr.GetOrdinal("Description")))
Dim dateNew As String = "", linkNew As String = ""
Dim DTNew As DateTime
Dim PDF As String = ""
DTNew = dr.GetDateTime(dr.GetOrdinal("PubDate"))
PDF = dr.GetString(dr.GetOrdinal("FilePath"))
dateNew = DTNew.ToLongDateString()
linkNew = "" & PDF & ""
writer.WriteElementString("link", linkNew)
writer.WriteElementString("pubdate", dateNew)
writer.WriteEndElement()
End While
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndDocument()
writer.Flush()
writer.Close()
dr.Close()
End If
【问题讨论】:
【参考方案1】:如果您忘记关闭现有的打开流,可能会发生这种情况。您可以尝试使用XMLWriter.Create
的重载版本,它采用stream
而不是string
,并使用File.Create
方法。类似于以下内容
Dim writer As XmlWriter = XmlWriter.Create(File.Create(FilePath), settings)
【讨论】:
仍然无法正常工作,不知道我错过了什么。我删除了文件,它复制得很好,不要出错。它仍然不会覆盖文件。这让我发疯了。 有人可以帮我解决这个问题,或者有人知道如何使用delet.file吗?我也试过这个,没有。我正在尝试此删除,但它不起作用。 Dim filePath As String = "\\server02\file$\rss\alert-special-reports2.xml" If Not New System.IO.FileInfo(filePath).Exists Then System.IO.File.Delete(filePath) End If 您遇到的错误是什么?当您尝试写入网络位置时,这可能是一些权限问题。以上是关于如何使用 If Not File.Exists 覆盖现有的 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章
is_file file_exists microtime performance
File.Exists + File.Move 错误“该进程无法访问该文件,因为它正被另一个进程使用。”