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

# Gestion des fichiers

> Parcourez, lisez, créez, déplacez et supprimez des fichiers au sein de votre application.

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

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

## Lister les fichiers d'un répertoire

`api.GetApplicationFiles(appID, path)` renvoie les entrées d'un répertoire sous forme de `[]squarecloud.FileInfo`. Un chemin vide liste la racine de l'application.

```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)
}
```

| Champ          | Type     | Description                                          |
| -------------- | -------- | ---------------------------------------------------- |
| `Type`         | `string` | `"file"` ou `"directory"`                            |
| `Name`         | `string` | Nom de l'entrée                                      |
| `Size`         | `int`    | Taille en octets — toujours `0` pour les répertoires |
| `LastModified` | `int64`  | Dernière modification en millisecondes Unix          |

## Lire un fichier

`api.ReadApplicationFile(appID, path)` renvoie un `squarecloud.FileContent` avec les octets du fichier.

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

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

<Note>
  L'API renvoie le contenu sous forme d'objet Buffer à la Node.js (`{"type": "Buffer", "data": [...]}`). Le SDK le décode pour vous — `content.Data` est un simple `[]byte` (le type `ByteArray`), prêt à l'emploi.
</Note>

## Créer ou écraser un fichier

`api.PutApplicationFile(appID, path, content)` écrit `content` à l'emplacement `path`, en créant le fichier s'il n'existe pas ou en l'écrasant s'il existe. Elle renvoie 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>
  Le contenu est envoyé à l'API sous forme de chaîne UTF-8 — l'envoi de fichiers binaires n'est pas encore pris en charge. Pour livrer des fichiers binaires, utilisez plutôt un [commit](/fr/sdks/go/commit_and_upload).
</Note>

## Déplacer ou renommer un fichier

`api.MoveApplicationFile(appID, path, to)` déplace ou renomme un fichier.

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

## Supprimer un fichier ou un répertoire

<Warning>
  Supprimer un répertoire supprime tout ce qu'il contient. Il n'existe aucun moyen de récupérer les fichiers supprimés à moins d'avoir un [snapshot](/fr/sdks/go/snapshots).
</Warning>

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