> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Gerenciando arquivos

> Navegue, leia, crie, mova e exclua arquivos dentro da sua aplicação.

```go theme={null}
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
```

## Listando arquivos de um diretório

`api.GetApplicationFiles(appID, path)` retorna as entradas de um diretório como um `[]squarecloud.FileInfo`. Um caminho vazio lista a raiz da aplicação.

```go theme={null}
entries, err := api.GetApplicationFiles("abc123def456abc123def456", "")
if err != nil {
	panic(err)
}

for _, entry := range entries {
	fmt.Println(entry.Type, entry.Name, entry.Size, entry.LastModified)
}
```

| Campo          | Tipo     | Descrição                                     |
| -------------- | -------- | --------------------------------------------- |
| `Type`         | `string` | `"file"` ou `"directory"`                     |
| `Name`         | `string` | Nome da entrada                               |
| `Size`         | `int`    | Tamanho em bytes — sempre `0` para diretórios |
| `LastModified` | `int64`  | Última modificação em milissegundos Unix      |

## Lendo um arquivo

`api.ReadApplicationFile(appID, path)` retorna um `squarecloud.FileContent` com os bytes do arquivo.

```go theme={null}
content, err := api.ReadApplicationFile("abc123def456abc123def456", "main.go")
if err != nil {
	panic(err)
}

fmt.Println(string(content.Data))
```

<Note>
  A API retorna o conteúdo como um objeto Buffer no estilo Node.js (`{"type": "Buffer", "data": [...]}`). O SDK decodifica para você — `content.Data` é um `[]byte` comum (o tipo `ByteArray`), pronto para uso.
</Note>

## Criando ou sobrescrevendo um arquivo

`api.PutApplicationFile(appID, path, content)` escreve `content` em `path`, criando o arquivo se ele não existir ou sobrescrevendo se existir. Retorna um `squarecloud.FileWritten`.

```go theme={null}
written, err := api.PutApplicationFile(
	"abc123def456abc123def456",
	"config/settings.json",
	[]byte(`{"debug": false}`),
)
if err != nil {
	panic(err)
}

fmt.Println(written.Written) // true
```

<Note>
  O conteúdo é enviado à API como uma string UTF-8 — uploads de arquivos binários ainda não são suportados. Para enviar arquivos binários, use um [commit](/pt-br/sdks/go/commit_and_upload).
</Note>

## Movendo ou renomeando um arquivo

`api.MoveApplicationFile(appID, path, to)` move ou renomeia um arquivo.

```go theme={null}
err := api.MoveApplicationFile("abc123def456abc123def456", "main.go", "src/main.go")
if err != nil {
	panic(err)
}
```

## Excluindo um arquivo ou diretório

<Warning>
  Excluir um diretório remove tudo que estiver dentro dele. Não há como recuperar arquivos excluídos, a não ser que você tenha um [snapshot](/pt-br/sdks/go/snapshots).
</Warning>

```go theme={null}
err := api.DeleteApplicationFile("abc123def456abc123def456", "src/old.go")
if err != nil {
	panic(err)
}
```
