MSDN によると、PathFileExists()
関数はファイルパス<260のみをサポートします
離れた場所にパスが存在するかどうかを確認したい。これで合法的に、名前が256文字のファイルを作成できますが、サーバー名を追加すると、全長が260を超えるため、使用PathFileExists()
できません。
ファイルの存在を確認するために他にどのようなオプションが必要ですか?
すべてのシェル パス処理関数は -1 文字に制限されてMAX_PATH
いるため、より長いファイル名をサポートする必要がある場合は、代わりに kernel32 関数を使用する必要があります。オプションは次のとおりです。
FindFirstFileは非常に簡単ですが、関数がエラー コードを返さない場合は、FindClose を呼び出す必要があります。これにより、ネットワーク上のファイルを照会している場合、追加のネットワーク ラウンドトリップがトリガーされます。呼び出し元のCloseHandleをクリーンアップする必要があるCreateFileに対して、追加のネットワーク ラウンドトリップもトリガーされます。さらに、それは間違った答えを与えるかもしれません。HANDLE
GetFileAttributesを使用する残りのオプションは、文字よりも長いファイル名をサポートする必要がある場合に、ファイルの存在を照会するための推奨される方法ですMAX_PATH
。