2011-01-27 6 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에 의해 처리되었으며, 게다가 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() 

것이다.