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

# Gestionar archivos

> Explora, lee, crea, mueve y elimina archivos dentro de tu aplicación.

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

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

## Listado de archivos de un directorio

`api.GetApplicationFiles(appID, path)` devuelve las entradas de un directorio como un `[]squarecloud.FileInfo`. Una ruta vacía lista la raíz de la aplicación.

```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     | Descripción                                    |
| -------------- | -------- | ---------------------------------------------- |
| `Type`         | `string` | `"file"` o `"directory"`                       |
| `Name`         | `string` | Nombre de la entrada                           |
| `Size`         | `int`    | Tamaño en bytes — siempre `0` para directorios |
| `LastModified` | `int64`  | Última modificación en milisegundos Unix       |

## Lectura de un archivo

`api.ReadApplicationFile(appID, path)` devuelve un `squarecloud.FileContent` con los bytes del archivo.

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

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

<Note>
  La API devuelve el contenido como un objeto Buffer al estilo de Node.js (`{"type": "Buffer", "data": [...]}`). El SDK lo decodifica por ti — `content.Data` es un `[]byte` normal (el tipo `ByteArray`), listo para usar.
</Note>

## Creación o sobrescritura de un archivo

`api.PutApplicationFile(appID, path, content)` escribe `content` en `path`, creando el archivo si no existe o sobrescribiéndolo si existe. Devuelve 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>
  El contenido se envía a la API como un string UTF-8 — las subidas de archivos binarios aún no están soportadas. Para enviar archivos binarios, usa un [commit](/es/sdks/go/commit_and_upload) en su lugar.
</Note>

## Mover o renombrar un archivo

`api.MoveApplicationFile(appID, path, to)` mueve o renombra un archivo.

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

## Eliminación de un archivo o directorio

<Warning>
  Eliminar un directorio elimina todo lo que contiene. No hay forma de recuperar los archivos eliminados a menos que tengas un [snapshot](/es/sdks/go/snapshots).
</Warning>

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