Funzione DeleteFileA (fileapi.h)
Elimina un file esistente.
Per eseguire questa operazione come operazione transazionata, usare la funzione DeleteFileTransacted .
Sintassi
BOOL DeleteFileA(
[in] LPCSTR lpFileName
);
Parametri
[in] lpFileName
Nome del file da eliminare.
Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, anteporre "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.
Suggerimento
A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente a rimuovere la limitazione MAX_PATH senza anteporre "\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di Denominazione di file, percorsi e spazi dei nomi .
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero (0). Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Se un'applicazione tenta di eliminare un file che non esiste, la funzione DeleteFile ha esito negativo con ERROR_FILE_NOT_FOUND. Se il file è di sola lettura, la funzione ha esito negativo con ERROR_ACCESS_DENIED.
L'elenco seguente identifica alcuni suggerimenti per l'eliminazione, la rimozione o la chiusura di file:
- Per eliminare un file di sola lettura, è innanzitutto necessario rimuovere l'attributo di sola lettura.
- Per eliminare o rinominare un file, è necessario disporre dell'autorizzazione di eliminazione per il file o eliminare l'autorizzazione figlio nella directory padre.
- Per eliminare in modo ricorsivo i file in una directory, usare la funzione SHFileOperation .
- Per rimuovere una directory vuota, usare la funzione RemoveDirectory .
- Per chiudere un file aperto, usare la funzione CloseHandle .
Se si configura una directory con tutti gli accessi tranne eliminare ed eliminare elementi figlio e gli elenchi di controllo di accesso (ACL) dei nuovi file vengono ereditati, è possibile creare un file senza poterlo eliminare. Tuttavia, è possibile creare un file e quindi ottenere tutto l'accesso richiesto nell'handle restituito al momento della creazione del file.
Se si richiede l'autorizzazione di eliminazione al momento della creazione di un file, è possibile eliminare o rinominare il file con tale handle, ma non con qualsiasi altro handle. Per altre informazioni, vedere Protezione dei file e diritti di accesso.
La funzione DeleteFile ha esito negativo se un'applicazione tenta di eliminare un file con altri handle aperti per le normali operazioni di I/O o come file mappato alla memoria (FILE_SHARE_DELETE deve essere stato specificato quando sono stati aperti altri handle).
La funzione DeleteFile contrassegna un file per l'eliminazione alla chiusura. Pertanto, l'eliminazione del file non viene eseguita fino alla chiusura dell'ultimo handle del file. Le chiamate successive a CreateFile per aprire il file hanno esito negativo con ERROR_ACCESS_DENIED.
L'uso dell'eliminazione POSIX causa l'eliminazione del file mentre gli handle rimangono aperti. Le chiamate successive a CreateFile per aprire il file hanno esito negativo con ERROR_FILE_NOT_FOUND.
Comportamento del collegamento simbolico:
Se il percorso punta a un collegamento simbolico, il collegamento simbolico viene eliminato, non la destinazione. Per eliminare una destinazione, è necessario chiamare CreateFile e specificare FILE_FLAG_DELETE_ON_CLOSE.
In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti:
Tecnologia | Supportato |
---|---|
Protocollo SMB (Server Message Block) 3.0 | Sì |
Failover trasparente SMB 3.0 (TFO) | Sì |
SMB 3.0 con condivisioni file di scalabilità orizzontale (SO) | Sì |
File system del volume condiviso cluster (CsvFS) | Sì |
Resilient File System (ReFS) | Sì |
Esempi
Per un esempio, vedere Blocco e sblocco degli intervalli di byte nei file.
Nota
L'intestazione fileapi.h definisce DeleteFile come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | fileapi.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |