VFile

Esta clase representa a un fichero binario y disponemos de funciones para consultar sus características, modificarlas así como crear, leer o escribir un fichero binario en disco.

Funciones

Constructor

VFile( String szFileName )

De información de ficheros

Boolean atEnd()

Number error()

Boolean exists()

String fileName()

VFileInfo info()

Boolean isSequential()

Number permissions()

Number pos()

Number size()

String symLinkTarget()

De operaciones sobre el fichero

void close()

Boolean copy( String szNewName )

Boolean flush()

Boolean link( String szLinkName )

Boolean open( Number nMode )

Boolean remove()

Boolean rename( String szNewName )

Boolean resize( Number nSize )

Boolean seek( Number nOffset )

Boolean setPermissions( Number nPermissions )

void unsetError()

Para el buffer del fichero

Number bufferAt( Number nIndex )

Number bufferSize()

Number readBuffer()

void setBufferAt( Number nIndex, Number nValue )

void setBufferSize( Number nSize )

Number writeBuffer( Number nBytes = -1 )

Para VByteArray

VByteArray read( Number nMaxSize )

VByteArray readAll()

VByteArray readLine( Number nMaxSize = 0 )

Number write( VByteArray baBuffer, Number nBytes = -1 )

Documentación de funciones

Constructor

VFile( String szFileName )

Constructor. Crea una instancia de objeto de la clase VFile.

Parámetros:

  • szFileName: string que indica el nombre o senda del fichero.

Funciones de información de ficheros

Boolean atEnd()

Devuelve true si el fin de fichero ya ha sido leído.

Number error()

Devuelve el código de estado del fichero.

Ver enum de errores de fichero.

Boolean exists()

Devuelve true si el fichero existe.

String fileName()

Devuelve el nombre del fichero.

VFileInfo info()

Devuelve un objeto VFileInfo con la información del fichero.

Boolean isSequential()

Devuelve true si el fichero sólo puede ser manipulado secuencialmente.

Number permissions()

Devuelve el valor de los permisos del fichero.

El valor devuelto es la suma (OR) de los valores de los permisos. Ver enum flags de permisos del fichero. Los valores con combinables mediante el uso del operador bitwise or booleano "|".

Number pos()

Devuelve la posición en curso del fichero. Se corresponde con la posición del último dato escrito o leído.

Si el fichero está cerrado o es secuencial devuelve cero.

Number size()

Devuelve el tamaño del fichero.

String symLinkTarget()

Devuelve la senda absoluta del fichero o directorio del enlace simbólico o acceso directo.

Devuelve una cadena vacía si el fichero no es un enlace simbólico o acceso directo.

Funciones de operaciones sobre el fichero

void close()

Cierra el fichero.

Antes de cerrarlo ejecuta flush().

Boolean copy( String szNewName )

Hace una copia del fichero en curso con otro nombre o path.

Devuelve true si la copia ha podido realizarse con éxito.

Parámetros:

  • szNewName: string que indica la senda donde se almacenará la copia del fichero

Boolean flush()

Guarda en disco los buffers de datos del fichero.

Devuelve true si ha podido realizarse con éxito.

Crear un acceso directo (Windows) o enlace simbólico (Unix).

Devuelve true si se creado con éxito.

Parámetros:

  • szLinkName: string que indica el nombre o senda completa del enlace

Boolean open( Number nMode )

Abre el fichero. Devuelve true si ha podido abrirlo.

Abre el fichero con los modos especificados. Los modos de apertura son combinables. Se pueden especificar varios separados por "|".

Parámetros:

Boolean remove()

Elimina el fichero en curso.

Devuelve true si se ha eliminado correctamente.

Boolean rename( String szNewName )

Renombra el fichero en curso.

Devuelve true si ha podido renombrarse correctamente. Si el fichero con el nombre szNewName ya existe devuelve false.

Parámetros:

  • szNewName: string que indica el nombre o senda nueva para el fichero.

Boolean resize( Number nSize )

Cambia el tamaño del fichero.

Devuelve true si ha podido realizarse correctamente.

Parámetros:

  • nSize: number que indica el número de bytes del nuevo tamaño del fichero

Boolean seek( Number nOffset )

Fija la posición en curso del fichero.

Devuelve true si se ha posicionado correctamente. Para fichero secuenciales devuelve el valor false.

Si la posición es posterior al fin de fichero, el fichero no se extiende, si se escribe en esa posición sí se extiende el fichero.

Parámetros:

  • nOffset: number que indica el número en bytes que representa la nueva posición del fichero.

Boolean setPermissions( Number nPermissions )

Fija los permisos del fichero. Se pueden especificar múltiples permisos de forma combinada, separados por "|". Devuelve true si la asignación de permisos ha finalizado correctamente.

Parámetros:

void unsetError()

Fija el estado del fichero al valor "ErrorNone" (sin errores).

Funciones para el buffer del fichero

Number bufferAt( Number nIndex )

Se usa para leer byte a byte el buffer.

Devuelve el valor del byte (valor entre 0 y 255) de la posición del buffer seleccionada.

Parámetros:

  • index: number que indica la posición del buffer.

Number bufferSize()

Fija el tamaño del buffer en bytes.

Parámetros:

  • nSize: número que indica el tamaño del buffer en bytes.

Number readBuffer()

Devuelve el número de bytes leídos que será el tamaño del buffer o menos.

Si el fichero está posicionado al final devolverá 0.

void setBufferAt( Number nIndex, Number nValue )

Escribir byte a byte en el buffer.

Parámetros:

  • nIndex: número que indica la posición del buffer en la que se escribirá.

  • nValue: número con valor de 0 a 255 que se escribirá en la posición del buffer.

void setBufferSize( Number nSize )

Fija el tamaño del buffer en bytes

Parámetros:

  • nSize: número que indica el tamaño del buffer en bytes

Number writeBuffer( Number nBytes = -1 )

Graba el buffer en el disco.

Parámetros:

  • nBytes: número que indica el número de bytes del buffer a escribir. Es opcional, si no se especifica asume el tamaño del buffer.

Funciones para VByteArray

VByteArray read( Number nMaxSize )

Retorna, como máximo el número de bytes especificados, en un objeto de la clase VByteArray. En caso de que el tamaño máximo especificado sea mayor que el tamaño del fichero, devolverá el contenido del fichero.

Parámetros:

  • nMaxSize: tamaño máximo de bytes que deseamos leer del fichero para añadir al VByteArray.

VByteArray readAll()

Retorna todo el contenido del fichero en un objeto de la clase VByteArray.

VByteArray readLine( Number nMaxSize = 0 )

Retorna el contenido de una línea del fichero. Si se especifica un tamaño máximo, nos devolverá ese número de bytes de la línea o en caso de ser menor el contenido de la línea.

Parámetros:

  • nMaxSize: tamaño máximo de bytes que deseamos leer de la línea para añadir al VByteArray. 0 = devolver toda la línea.

Number write( VByteArray baBuffer, Number nBytes = -1 )

Graba el contenido de un objeto VByteArray en el fichero.

Parámetros:

  • baBuffer: objeto de la clase VByteArray que devuelve un buffer con el contenido a grabar.

  • nBytes: número que indica el número de bytes del buffer a escribir. Es opcional, si no se especifica asume el tamaño del buffer.

Ejemplos

1. Ejemplo de creación de un fichero de texto

////////////////////////////////////////////////////////////
// Ejemplo de creación de un fichero de texto

// Para usar las funciones de la clase VFile primero hay que importarla
importClass( "VFile" );

// Se declara el objeto fichero
var fi = new VFile( "/buffer.txt" );

// Se abre el fichero de escritura (si no existe se crea y si existe se limpia)
if ( fi.open( VFile.OpenModeWriteOnly | VFile.OpenModeTruncate) )
{
    // Se llena el buffer con las 26 letras del abecedario
    for( var x=0; x < 26; ++x )
    {
        fi.setBufferAt( x, 65+x );
    }

    // Se graba el buffer
    fi.writeBuffer( 26 );

    // Se cierra el fichero
    fi.close();
}
else
    // Si no ha sido posible abrir el fichero se muestra error
    alert( "No se pudo abrir el fichero " + fi.fileName(), "Error" );

2. Ejemplo de lectura de un fichero binario

////////////////////////////////////////////////////////////
// Ejemplo de lectura de un fichero binario

// Para usar las funciones de la clase VFile primero hay que importarla
importClass( "VFile" );

// Se declara el objeto fichero
var fi = new VFile( "c:/fichero.exe" );

// Se abre el fichero en modo sólo lectura
if ( fi.open( VFile.OpenModeReadOnly ) ) 
{
    // Se lee el fichero buffer a buffer
    var contenido = "";
    var numBytesLeidos = fi.readBuffer();

    // Cada buffer se procesa byte a byte
    while ( numBytesLeidos != 0 ) 
    {
        for( var pos = 0; pos < numBytesLeidos; pos += 1 ) 
        {
            contenido += String.fromCharCode( fi.bufferAt( pos ) );
        }
        numBytesLeidos = fi.readBuffer();
    }
    // Se cierra el fichero
    fi.close();

    // Mostrar la cadena leída
    alert( contenido );
} 
else 
{
    // Si no ha sido posible abrir el fichero se muestra error
    alert( "No se pudo abrir el fichero " + fi.fileName(), "Error" );
}

Última actualización