1

ここで開始する前に記述されたコード(The Daily WTFの送信のように聞こえます!)があり、処理のためにxmlファイルをロードします(Throw行は、犯人のIDを非表示にするために簡略化されています。それ以外の場合は逐語的です)。

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 に答える