3

MSDN によると、PathFileExists()関数はファイルパス<2​​60のみをサポートします

離れた場所にパスが存在するかどうかを確認したい。これで合法的に、名前が256文字のファイルを作成できますが、サーバー名を追加すると、全長が260を超えるため、使用PathFileExists()できません。

ファイルの存在を確認するために他にどのようなオプションが必要ですか?

4

1 に答える 1

4

すべてのシェル パス処理関数は -1 文字に制限されてMAX_PATHいるため、より長いファイル名をサポートする必要がある場合は、代わりに kernel32 関数を使用する必要があります。オプションは次のとおりです。

  1. FindFirstFile
  2. ファイルの作成
  3. GetFileAttributes

FindFirstFileは非常に簡単ですが、関数がエラー コードを返さない場合は、FindClose を呼び出す必要がありますこれにより、ネットワーク上のファイルを照会している場合、追加のネットワーク ラウンドトリップがトリガーされます。呼び出し元のCloseHandleをクリーンアップする必要があるCreateFileに対して、追加のネットワーク ラウンドトリップもトリガーされます。さらに、それは間違った答えを与えるかもしれません。HANDLE

GetFileAttributesを使用する残りのオプションは、文字よりも長いファイル名をサポートする必要がある場合に、ファイルの存在を照会するための推奨される方法ですMAX_PATH

于 2012-12-22T20:12:57.463 に答える