---
title: roReadWriteFile
slug: develop/es/roreadwritefile
docTags: 
createdAt: 2025-03-11T07:07:17.200Z
---

El objeto abre un archivo y permite operaciones tanto de lectura como de escritura en ese archivo.

Creación de objetos: Crear un objeto *roReadWriteFile* abre un archivo existente tanto para lectura como para escritura. La creación del objeto falla si el archivo no existe. La posición actual se establece al inicio del archivo.

```text
CreateObject("roReadWriteFile", filename As String)
```

## ifReadStream

### SetReceiveEol(eol\_sequence As String) As Void

Establece la secuencia EOL al leer desde el stream.

### ReadByte() As Integer

Lee un solo byte del stream, bloqueando si es necesario. Si se alcanza el EOF o existe una condición de error, entonces se devuelve un valor menor que 0.

### ReadByteIfAvailable() As Integer

Lee un solo byte del stream si hay uno disponible. Si no hay bytes disponibles, devuelve inmediatamente. Un valor de retorno menor que 0 indica que se ha alcanzado el EOF o que no hay bytes disponibles.

### ReadLine() As String

Lee hasta encontrar una secuencia completa de fin de línea. Si no logra encontrar la secuencia dentro de 4096 bytes, entonces devuelve los 4096 bytes encontrados. En este caso no se descartan datos.

### ReadBlock(size As Integer) As String

Lee la cantidad especificada de bytes. El número está limitado a 65536 bytes. En caso de EOF o error, se devolverán menos bytes de los solicitados. Cualquier byte nulo en el archivo ocultará cualquier byte posterior.

### AtEof() As Boolean

Devuelve `Verdadero` si se ha realizado un intento de lectura más allá del final del archivo. Si la posición actual está al final del archivo, pero no se ha realizado ningún intento de leer más allá de este, este método devolverá `Falso`.

## ifStreamSend

### SetSendEol(eol\_sequence As String) As Void

Establece la secuencia EOL al escribir en el stream. El valor predeterminado es CR+LF. Si necesita establecer este valor en un carácter no imprimible, use la `chr()` [función global](docId:8ViuBcC3f1MPXOoS0i8yf).

### SendByte(byte As Integer) As Void

Escribe el byte especificado en el stream.

### SendLine(string As String) As Void

Escribe los caracteres especificados en el stream seguidos de la secuencia EOL actual.

### SendBlock(a As Dynamic) As Void

Escribe los caracteres especificados en el stream. Este método puede admitir tanto una cadena como un *roByteArray*. Si el bloque es una cadena, cualquier byte nulo finalizará el bloque.

### Flush() As Void

Escribe el stream en el archivo, bloqueando la ejecución hasta que todos los datos se hayan escrito.

### AsyncFlush() As Void

Escribe el stream en el archivo en unos pocos segundos. El sistema no bloqueará la ejecución mientras escribe en el archivo.

:::hint{type="info"}
El sistema realiza automáticamente un vaciado asíncrono cuando se destruye la instancia del objeto (por ejemplo, cuando se reasigna la variable que lo contiene). El stream se escribe primero en el kernel, que luego lo escribe en el sistema de archivos cuando hay recursos disponibles.
:::

## ifStreamSeek

### SeekAbsolute(offset As Integer) As Void

Busca el desplazamiento especificado. Si el desplazamiento está más allá del final del archivo, entonces el archivo se extenderá en la siguiente escritura y cualquier espacio previamente desocupado se rellenará con bytes nulos.

### SeekRelative(offset As Integer) As Void

Busca el desplazamiento especificado relativo a la posición actual. Si el desplazamiento final está más allá del final del archivo, entonces el archivo se extenderá como se describe en `SeekAbsolute()`.

### SeekToEnd() As Void

Busca hasta el final del archivo.

### CurrentPosition() As Integer

Recupera la posición actual dentro del archivo.
