> ## 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.

# Gestire i file

> Sfoglia, leggi, crea, sposta ed elimina i file all'interno della tua applicazione.

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

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

## Elencare i file di una directory

`api.GetApplicationFiles(appID, path)` restituisce le voci di una directory come `[]squarecloud.FileInfo`. Un percorso vuoto elenca la root dell'applicazione.

```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     | Descrizione                                      |
| -------------- | -------- | ------------------------------------------------ |
| `Type`         | `string` | `"file"` oppure `"directory"`                    |
| `Name`         | `string` | Nome della voce                                  |
| `Size`         | `int`    | Dimensione in byte — sempre `0` per le directory |
| `LastModified` | `int64`  | Ultima modifica in millisecondi Unix             |

## Leggere un file

`api.ReadApplicationFile(appID, path)` restituisce un `squarecloud.FileContent` con i byte del file.

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

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

<Note>
  L'API restituisce il contenuto come oggetto Buffer in stile Node.js (`{"type": "Buffer", "data": [...]}`). L'SDK lo decodifica per te — `content.Data` è un semplice `[]byte` (il tipo `ByteArray`), pronto all'uso.
</Note>

## Creare o sovrascrivere un file

`api.PutApplicationFile(appID, path, content)` scrive `content` in `path`, creando il file se non esiste o sovrascrivendolo se esiste. Restituisce un `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>
  Il contenuto viene inviato all'API come stringa UTF-8 — l'upload di file binari non è ancora supportato. Per inviare file binari, usa invece un [commit](/it/sdks/go/commit_and_upload).
</Note>

## Spostare o rinominare un file

`api.MoveApplicationFile(appID, path, to)` sposta o rinomina un file.

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

## Eliminare un file o una directory

<Warning>
  L'eliminazione di una directory rimuove tutto ciò che contiene. Non c'è modo di recuperare i file eliminati, a meno che tu non abbia uno [snapshot](/it/sdks/go/snapshots).
</Warning>

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