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

Función

VFile( String szFileName )

De información de ficheros

Retorno

Función

Boolean

Number

Boolean

String

Boolean

Number

Number

pos()

Number

String

De operaciones sobre el fichero

Retorno

Función

void

Boolean

copy( String szNewName )

Boolean

Boolean

link( String szLinkName )

Boolean

open( Number nMode )

Boolean

Boolean

rename( String szNewName )

Boolean

resize( Number nSize )

Boolean

seek( Number nOffset )

Boolean

setPermissions( Number nPermissions )

void

Para el buffer del fichero

Retorno

Función

Number

bufferAt( Number nIndex )

Number

Number

void

setBufferAt( Number nIndex, Number nValue )

void

setBufferSize( Number nSize )

Number

writeBuffer( Number nBytes = -1 )

Para VByteArray

Retorno

Función

read( Number nMaxSize )

readLine( Number nMaxSize = 0 )

Number

write( VByteArray baBuffer, Number nBytes = -1 )

Enumeraciones

Errores de fichero

  • ErrorNone = 00 Ok, no se ha producido ningún error

  • ErrorRead = 01 Se ha producido un error al leer del fichero

  • ErrorWrite = 02 Se ha producido un error al escribir en el fichero

  • ErrorFatal = 03 Se ha producido un error fatal

  • ErrorResource = 04 Se ha producido un error en el recurso

  • ErrorOpen = 05 No ha sido posible abrir el fichero

  • ErrorAbort = 06 Se ha abortado la operación sobre el fichero

  • ErrorTimeOut = 07 Se ha producido un error de timeout

  • ErrorUnspecified = 08 Se ha producido un error no especificado

  • ErrorRemove = 09 No ha sido posible eliminar el fichero

  • ErrorRename = 10 No ha sido posible renombrar el fichero

  • ErrorPosition = 11 La posición del fichero no puede ser modificada

  • ErrorResize = 12 No es posible redimensionar el fichero

  • ErrorPermissions = 13 No tiene permisos de acceso al fichero

  • ErrorCopy = 14 No se podido copiar el fichero

Flags de modos de apertura del fichero

  • OpenModeNotOpen = 0x0000 No está abierto

  • OpenModeReadOnly = 0x0001 Abierto para lectura

  • OpenModeWriteOnly = 0x0002 Abierto para escritura

  • OpenModeReadWrite = OpenModeReadOnly | OpenModeWriteOnly Abierto para lectura/escritura

  • OpenModeAppend = 0x0004 Abierto para escribir al final del fichero, sin borrar el contenido existente

  • OpenModeTruncate = 0x0008 Abierto para escritura truncando si no existe,si existe borra contenido antes de escribir

  • OpenModeText = 0x0010 Se abre en modo texto. Al leer el fin de línea se convierte al carácter "\n"

  • OpenModeUnbuffered = 0x0020 No se utiliza buffer para el fichero

Flags de permisos del fichero

  • PermissionReadOwner = 0x4000 El propietario puede leer el fichero

  • PermissionWriteOwner = 0x2000 El propietario puede escribir en el fichero

  • PermissionExeOwner = 0x1000 El propietario puede ejecutar el fichero

  • PermissionReadUser = 0x0400 El usuario puede leer el fichero

  • PermissionWriteUser = 0x0200 El usuario puede escribir en el fichero

  • PermissionExeUser = 0x0100 El usuario puede ejecutar el fichero

  • PermissionReadGroup = 0x0040 El grupo de usuarios puede leer el fichero

  • PermissionWriteGroup = 0x0020 El grupo de usuarios puede escribir en el fichero

  • PermissionExeGroup = 0x0010 El grupo de usuarios puede ejecutar el fichero

  • PermissionReadOther = 0x0004 Todos pueden leer el fichero

  • PermissionWriteOther = 0x0002 Todos pueden escribir en el fichero

  • PermissionExeOther = 0x0001 Todos pueden ejecutar el fichero

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:

  • nMode: number que indica el modo de apertura. Ver enum de flags de modos de apertura del fichero. Los valores con combinables mediante el uso del operador bitwise or booleano "|".

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:

  • nPermissions: number que indica los permisos. Ver enum flags de permisos del fichero. Los valores con combinables mediante el uso del operador bitwise or booleano "|".

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