다음을 통해 공유


DeleteFileA 함수(fileapi.h)

기존 파일을 삭제합니다.

이 작업을 트랜잭션 작업으로 수행하려면 DeleteFileTransacted 함수를 사용합니다.

구문

BOOL DeleteFileA(
  [in] LPCSTR lpFileName
);

매개 변수

[in] lpFileName

삭제할 파일의 이름입니다.

기본적으로 이름은 MAX_PATH 문자로 제한됩니다. 이 제한을 와이드 문자 32,767자로 확장하려면 경로 앞에 "\\?\"를 추가합니다. 자세한 내용은 파일 이름 지정, 경로 및 네임스페이스를 참조하세요.

Windows 10 버전 1607부터 "\\?\" 앞에 추가하지 않고 MAX_PATH 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 파일, 경로 및 네임스페이스의 "최대 경로 길이 제한" 섹션을 참조하세요.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

애플리케이션이 존재하지 않는 파일을 삭제하려고 하면 ERROR_FILE_NOT_FOUND DeleteFile 함수가 실패합니다. 파일이 읽기 전용 파일인 경우 함수는 ERROR_ACCESS_DENIED 함께 실패합니다.

다음 목록에서는 파일을 삭제, 제거 또는 닫기 위한 몇 가지 팁을 식별합니다.

  • 읽기 전용 파일을 삭제하려면 먼저 읽기 전용 특성을 제거해야 합니다.
  • 파일을 삭제하거나 이름을 바꾸려면 파일에 대한 삭제 권한이 있거나 부모 디렉터리에서 자식 권한을 삭제해야 합니다.
  • 디렉터리에서 파일을 재귀적으로 삭제하려면 SHFileOperation 함수를 사용합니다.
  • 빈 디렉터리를 제거하려면 RemoveDirectory 함수를 사용합니다.
  • 열려 있는 파일을 닫려면 CloseHandle 함수를 사용합니다.

자식 삭제 및 삭제를 제외한 모든 액세스 권한이 있는 디렉터리를 설정하고 새 파일의 ACL(액세스 제어 목록)이 상속되는 경우 파일을 삭제하지 않고도 만들 수 있습니다. 그러나 파일을 만든 다음, 파일을 만들 때 반환되는 핸들에서 요청하는 모든 액세스 권한을 가져올 수 있습니다.

파일을 만들 때 삭제 권한을 요청하는 경우 해당 핸들을 사용하여 파일을 삭제하거나 이름을 바꿀 수 있지만 다른 핸들에서는 삭제하거나 이름을 바꿀 수 없습니다. 자세한 내용은 파일 보안 및 액세스 권한을 참조하세요.

애플리케이션이 일반 I/O 또는 메모리 매핑된 파일로 열려 있는 다른 핸들이 있는 파일을 삭제하려고 하면 DeleteFile 함수가 실패합니다(다른 핸들을 열 때 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 프로토콜 Yes
SMB 3.0 TFO(투명 장애 조치(failover)) Yes
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 Yes
CsvFS(클러스터 공유 볼륨 파일 시스템) Yes
ReFS(Resilient File System)

예제

예제는 파일에서 바이트 범위 잠금 및 잠금 해제를 참조하세요.

참고

fileapi.h 헤더는 DELETEFile 을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 fileapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CloseHandle

CreateFile

DeleteFileTransacted

파일 관리 함수

바로 가기 링크