次の方法で共有


DeleteFileA 関数 (fileapi.h)

既存のファイルを削除します。

この操作をトランザクション操作として実行するには、DeleteFileTransacted 関数を使用します。

構文

BOOL DeleteFileA(
  [in] LPCSTR lpFileName
);

パラメーター

[in] lpFileName

削除するファイルの名前。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値はゼロ (0) になります。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

アプリケーションが存在しないファイルを削除しようとすると、DeleteFile 関数は ERROR_FILE_NOT_FOUNDで失敗します。 ファイルが読み取り専用ファイルの場合、関数は ERROR_ACCESS_DENIEDで失敗します。

次の一覧では、ファイルの削除、削除、または閉じに関するいくつかのヒントを示します。

  • 読み取り専用ファイルを削除するには、まず読み取り専用属性を削除する必要があります。
  • ファイルを削除または名前変更するには、ファイルに対する削除アクセス許可を持っているか、親ディレクトリの子アクセス許可を削除する必要があります。
  • ディレクトリ内のファイルを再帰的に削除するには、SHFileOperation 関数を使用します。
  • 空のディレクトリを削除するには、RemoveDirectory 関数を使用します。
  • 開いているファイルを閉じるには、CloseHandle 関数を使用します。

削除と削除の子を除くすべてのアクセス権を持つディレクトリを設定し、新しいファイルのアクセス制御リスト (ACL) を継承する場合は、削除せずにファイルを作成できます。 ただし、ファイルを作成し、ファイルの作成時に返されるハンドルに対して要求したすべてのアクセス権を取得できます。

ファイルの作成時に削除アクセス許可を要求した場合は、そのハンドルを使用してファイルを削除または名前変更できますが、他のハンドルでは削除できません。 詳細については、「ファイルのセキュリティとアクセス権の」を参照してください。

DeleteFile 関数は、アプリケーションが通常の I/O 用に開いている他のハンドルがあるファイルを削除しようとした場合、またはメモリ マップト ファイルとして削除しようとすると失敗します (FILE_SHARE_DELETE 他のハンドルが開かれたときに指定されている必要があります)。

DeleteFile 関数は、ファイルを閉じると削除対象としてマークします。 したがって、ファイルの最後のハンドルが閉じられるまで、ファイルの削除は行われません。 ファイルを開くために CreateFile を する後続の呼び出しは、ERROR_ACCESS_DENIEDで失敗します。

POSIX 削除を使用すると、ハンドルが開いたままでファイルが削除されます。 ファイルを開くために CreateFile を する後続の呼び出しは、ERROR_FILE_NOT_FOUNDで失敗します。

シンボリック リンクの動作:

パスがシンボリック リンクを指している場合、シンボリック リンクは削除され、ターゲットは削除されません。 ターゲットを削除するには、CreateFile 呼び出し、FILE_FLAG_DELETE_ON_CLOSEを指定する必要があります。

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 透過的フェールオーバー (TFO) はい
SMB 3.0 とスケールアウト ファイル共有 (SO) はい
クラスター共有ボリューム ファイル システム (CsvFS) はい
回復性のあるファイル システム (ReFS) はい

例については、「ファイルのバイト範囲のロックとロック解除」を参照してください。

手記

fileapi.h ヘッダーは、deleteFile を、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー fileapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

CloseHandle の

CreateFile の

DeleteFileTransacted の

ファイル管理機能の

シンボリック リンク の