---
title: "Como Deletar Arquivos e Diretórios em Zig"
url: "https://ziglang.com.br/receitas/como-deletar-arquivos-e-diret%C3%B3rios-em-zig/"
markdown_url: "https://ziglang.com.br/receitas/como-deletar-arquivos-e-diret%C3%B3rios-em-zig.MD"
description: "Aprenda a deletar arquivos e diretórios em Zig usando std.fs. Remoção simples, recursiva e com tratamento de erros para operações seguras."
date: "2026-02-21"
author: "Zig Brasil"
---

# Como Deletar Arquivos e Diretórios em Zig

Aprenda a deletar arquivos e diretórios em Zig usando std.fs. Remoção simples, recursiva e com tratamento de erros para operações seguras.


# Como Deletar Arquivos e Diretórios em Zig

Remover arquivos e diretórios é uma operação comum em limpeza de dados temporários, gerenciamento de cache e scripts de automação. Zig fornece funções seguras e explícitas para estas operações.

## Deletar um Arquivo

```zig
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    // Criar arquivo de teste
    const arq = try std.fs.cwd().createFile("temporario.txt", .{});
    arq.close();

    // Deletar o arquivo
    try std.fs.cwd().deleteFile("temporario.txt");
    try stdout.print("Arquivo 'temporario.txt' deletado!\n", .{});
}
```

## Deletar com Tratamento de Erros

```zig
const std = @import("std");

fn deletarSeguro(caminho: []const u8) !bool {
    std.fs.cwd().deleteFile(caminho) catch |err| {
        switch (err) {
            error.FileNotFound => return false,
            error.AccessDenied => {
                const stderr = std.io.getStdErr().writer();
                try stderr.print("Sem permissão para deletar '{s}'\n", .{caminho});
                return err;
            },
            else => return err,
        }
    };
    return true;
}

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    // Tentar deletar arquivo que pode não existir
    if (try deletarSeguro("arquivo_que_nao_existe.txt")) {
        try stdout.print("Arquivo deletado\n", .{});
    } else {
        try stdout.print("Arquivo não encontrado (ok)\n", .{});
    }
}
```

## Deletar Diretório Vazio

```zig
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    // Criar e depois deletar diretório vazio
    try std.fs.cwd().makeDir("pasta_vazia");
    try stdout.print("Diretório criado\n", .{});

    try std.fs.cwd().deleteDir("pasta_vazia");
    try stdout.print("Diretório 'pasta_vazia' removido!\n", .{});
}
```

## Deletar Diretório com Conteúdo (Recursivo)

Use `deleteTree` para remover diretórios e todo o seu conteúdo recursivamente.

```zig
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    // Criar estrutura de teste
    try std.fs.cwd().makePath("projeto_temp/src/modulos");
    const arq1 = try std.fs.cwd().createFile("projeto_temp/README.md", .{});
    arq1.close();
    const arq2 = try std.fs.cwd().createFile("projeto_temp/src/main.zig", .{});
    arq2.close();
    const arq3 = try std.fs.cwd().createFile("projeto_temp/src/modulos/util.zig", .{});
    arq3.close();
    try stdout.print("Estrutura criada\n", .{});

    // Deletar tudo recursivamente
    try std.fs.cwd().deleteTree("projeto_temp");
    try stdout.print("Diretório 'projeto_temp' e todo conteúdo removidos!\n", .{});
}
```

## Deletar Múltiplos Arquivos

```zig
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    // Criar arquivos de teste
    const nomes = [_][]const u8{ "temp1.txt", "temp2.txt", "temp3.txt" };
    for (nomes) |nome| {
        const arq = try std.fs.cwd().createFile(nome, .{});
        arq.close();
    }
    try stdout.print("Arquivos criados\n", .{});

    // Deletar todos
    var deletados: u32 = 0;
    var erros: u32 = 0;
    for (nomes) |nome| {
        std.fs.cwd().deleteFile(nome) catch {
            erros += 1;
            continue;
        };
        deletados += 1;
    }

    try stdout.print("Deletados: {d}, Erros: {d}\n", .{ deletados, erros });
}
```

## Exemplo Prático: Limpar Arquivos por Extensão

```zig
const std = @import("std");

fn limparPorExtensao(dir_path: []const u8, extensao: []const u8) !u32 {
    var dir = try std.fs.cwd().openDir(dir_path, .{ .iterate = true });
    defer dir.close();

    var removidos: u32 = 0;
    var iter = dir.iterate();

    while (try iter.next()) |entrada| {
        if (entrada.kind == .file and std.mem.endsWith(u8, entrada.name, extensao)) {
            dir.deleteFile(entrada.name) catch continue;
            removidos += 1;
        }
    }

    return removidos;
}

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();

    // Criar arquivos de teste
    try std.fs.cwd().makePath("cache");
    const exts = [_][]const u8{ "cache/a.tmp", "cache/b.tmp", "cache/c.log", "cache/d.tmp" };
    for (exts) |nome| {
        const arq = try std.fs.cwd().createFile(nome, .{});
        arq.close();
    }

    const removidos = try limparPorExtensao("cache", ".tmp");
    try stdout.print("Removidos {d} arquivo(s) .tmp\n", .{removidos});

    // Limpar
    try std.fs.cwd().deleteTree("cache");
}
```

## Veja Também

- [Verificar se Arquivo Existe](/receitas/zig-verificar-arquivo-existe/) — Verifique antes de deletar
- [Listar Conteúdo de Diretório](/receitas/zig-listar-diretorio/) — Liste antes de limpar
- [Criar Diretórios](/receitas/zig-criar-diretorio/) — Crie diretórios
- [Criar Arquivos Temporários](/receitas/zig-arquivo-temporario/) — Temporários com limpeza automática
