VB.Net - FileInfo.FullName - Я что-то упустил? - PullRequest
1 голос
/ 27 января 2011

У меня есть некоторый код, который был написан до того, как я начал здесь (звучит как представление для 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 используется еще раз в методе при удалении файла

From MSDN :

FullName : получение полного пути к каталогу или файлу.(Унаследовано от FileSystemInfo .)

Конечно, это просто возвращает то, что уже находится в strPath и может быть заменено простым

strFileName = strPath

Или вообще покончить с strFileName и использовать повсюду strPath.

Или я что-то упустил?FileInfo.FullName делает что-нибудь еще?

Я действительно думал, что это проверка файла, но об этом уже позаботился Try...Catch вокруг XmlDocument.Load и, кроме того, File.Exists(strPath) будетнамного проще.

Ответы [ 2 ]

3 голосов
/ 27 января 2011

FileInfo.FullName вернет полный путь, даже если входной strPath является относительным путем.

2 голосов
/ 27 января 2011

@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()

Если вы знаете, что вы всегда будете иметь дело с абсолютными путями, вы, вероятно, можете избавиться от этого кода сейчас.

...