2011-01-27 2 views
1

У меня есть некоторый код, который был написан до того, как я начал здесь (звучит как представление для The Daily WTF!), Которое загружает XML-файл для обработки (линия Throw была упрощена, чтобы скрыть личность виновника, в противном случае ее дословный).VB.Net - FileInfo.FullName - Я что-то упустил?

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) было бы гораздо проще.

ответ

3

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

+0

Пути здесь всегда будут UNC – Shevek

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

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