1

我有一些代码是在我开始之前编写的(听起来像是为 The Daily WTF 提交的!),它加载了一个 xml 文件进行处理(Throw 行已被简化以隐藏罪魁祸首的身份,否则就是逐字记录)。

Try
    docData.Load(strPath)
Catch oError As Exception
    Throw New Exception("There is a load or parse error in the xml")
End Try

oFileInfo = New FileInfo(strPath)
strFileName = oFileInfo.FullName
oFileInfo = Nothing

strFileName在方法中再次使用,传递给另一个方法

strPath在方法中再次使用,删除文件时

来自MSDN

FullName:获取目录或文件的完整路径。(继承自FileSystemInfo。)

当然,这只是简单地返回已经存在的内容,strPath并且可以用一个简单的替换

strFileName = strPath

甚至strFileName完全取消并strPath始终使用。

还是我错过了什么?做FileInfo.FullName别的吗?

我确实认为这是一个文件存在检查,但这已经被Try...Catch周围的人照顾了XmlDocument.Load,而且File.Exists(strPath)会简单得多。

4

2 回答 2

3

FileInfo.FullName即使输入 strPath 是相对路径,也会返回完整路径。

于 2011-01-27T11:46:38.297 回答
2

@Joe 说的是技术上strPath可能是相对路径。当您将其传递到FileInfo并检索FullName属性时,它会转换为绝对路径。尽管您说一切都是 UNC(并且我假设您也指绝对路径),但有可能在某一时刻这被称为相对路径。例如此代码将输出c:\Users\...\bin\somefile.bin

    Dim F As New System.IO.FileInfo("..\somefile.bin")
    Trace.WriteLine(F.FullName)
    Me.Close()

如果您知道您将始终处理绝对路径,那么您现在可能可以摆脱该代码。

于 2011-01-27T14:07:57.287 回答