# VFileInfo

Los objetos de esta clase contienen la información de un fichero de disco. Tiene funciones generales para obtener información de la senda, el fichero y sus permisos además de permitir alterar algunas características del fichero.

## Funciones

**Del path**

| Retorno | Función                                   |
| ------- | ----------------------------------------- |
| String  | [absoluteFilePath](#absolutefilepath)()   |
| String  | [absolutePath](#absolutepath)()           |
| String  | [baseName](#basename)()                   |
| String  | [bundleName](#bundlename)()               |
| String  | [canonicalFilePath](#canonicalfilepath)() |
| String  | [canonicalPath](#canonicalpath)()         |
| String  | [completeBaseName](#completebasename)()   |
| String  | [completeSuffix](#completesuffix)()       |
| String  | [fileName](#filename)()                   |
| String  | [filePath](#filepath)()                   |
| String  | [group](#group)()                         |
| Number  | [groupId](#groupid)()                     |

**De información**

| Retorno  | Función                         |
| -------- | ------------------------------- |
| Boolean  | [caching](#caching)()           |
| DateTime | [created](#created)()           |
| Boolean  | [exists](#exists)()             |
| Boolean  | [isAbsolute](#isabsolute)()     |
| Boolean  | [isBundle](#isbundle)()         |
| Boolean  | [isDir](#isdir)()               |
| Boolean  | [isExecutable](#isexecutable)() |
| Boolean  | [isFile](#isfile)()             |
| Boolean  | [isHidden](#ishidden)()         |
| Boolean  | [isReadable](#isreadable)()     |
| Boolean  | [isRelative](#isrelative)()     |
| Boolean  | [isRoot](#isroot)()             |
| Boolean  | [isSymLink](#issymlink)()       |
| Boolean  | [isWritable](#iswritable)()     |
| DateTime | [lastModified](#lastmodified)() |
| DateTime | [lastRead](#lastread)()         |

**De asignación**

| Retorno | Función                                         |
| ------- | ----------------------------------------------- |
| Boolean | [makeAbsolute](#makeabsolute)()                 |
| String  | [owner](#owner)()                               |
| Number  | [ownerId](#ownerid)()                           |
| String  | [path](#path)()                                 |
| Boolean | [permission](#permission)( Number permissions ) |
| Number  | [permissions](#permissions)()                   |
| void    | [refresh](#refresh)()                           |
| void    | [setCaching](#setcaching)( Boolean bEnable )    |
| void    | [setFile](#setfile)( String szFilePath )        |
| Number  | [size](#size)()                                 |
| String  | [suffix](#suffix)()                             |
| String  | [symLinkTarget](#symlinktarget)()               |

## Documentación de funciones

### Funciones del path

#### String absoluteFilePath() <a href="#absolutefilepath" id="absolutefilepath"></a>

Devuelve el path absoluto del fichero incluyendo el nombre del fichero.

#### String absolutePath() <a href="#absolutepath" id="absolutepath"></a>

Devuelve el path absoluto del fichero sin incluir el nombre del fichero.

#### String baseName() <a href="#basename" id="basename"></a>

Devuelve el nombre del fichero sin incluir la senda ni la extensión. El nombre son todos los caracteres hasta el primero punto ".". Por ejemplo de "/tmp/archive.tar.gz" devolvería "archive".

#### String bundleName() <a href="#bundlename" id="bundlename"></a>

Devuelve el nombre del enlace al fichero. En Mac OS X devuelve el nombre del enlace, en otras plataformas devuelve una cadena vacía.

#### String canonicalFilePath() <a href="#canonicalfilepath" id="canonicalfilepath"></a>

Devuelve el path de la senda absoluta de un enlace simbólico del fichero incluyendo el nombre. Si el fichero no existe devuelve una cadena vacía.

#### String canonicalPath() <a href="#canonicalpath" id="canonicalpath"></a>

Devuelve el path de la senda absoluta de un enlace simbólico del fichero sin incluir el nombre. Si el fichero no existe devuelve una cadena vacía.

#### String completeBaseName() <a href="#completebasename" id="completebasename"></a>

Devuelve el nombre completo del fichero incluyendo la extensión sin la senda de la senda. Por ejemplo de "/tmp/archive.tar.gz" devolvería "archive.tar".

#### String completeSuffix() <a href="#completesuffix" id="completesuffix"></a>

Devuelve todas las extensiones del fichero. Por ejemplo, de "/tmp/archive.tar.gz" devuelve "tar.gz"

#### String fileName() <a href="#filename" id="filename"></a>

Devuelve el nombre del fichero excluyendo la senda. Por ejemplo, de "/tmp/archive.tar.gz" devuelve "archive.tar.gz".

#### String filePath() <a href="#filepath" id="filepath"></a>

Devuelve el nombre del fichero incluyendo la senda tanto si es absoluta o como relativa.

#### String group() <a href="#group" id="group"></a>

Devuelve el nombre del grupo del fichero.

#### Number groupId() <a href="#groupid" id="groupid"></a>

Devuelve el código (Id) del grupo del fichero. Sólo para sistemas Unix.

### Funciones de información

#### Boolean caching() <a href="#caching" id="caching"></a>

Devuelve true si el cacheado del fichero está habilitado.

#### DateTime created() <a href="#created" id="created"></a>

Devuelve la fecha y hora de creación del fichero. En sistemas Unix esta fecha cambia tanto en la creación como si hay modificación de permisos.

#### Boolean exists() <a href="#exists" id="exists"></a>

Devuelve true si el fichero existe.

#### Boolean isAbsolute() <a href="#isabsolute" id="isabsolute"></a>

Devuelve true si la senda apunta a una senda absoluta.

#### Boolean isBundle() <a href="#isbundle" id="isbundle"></a>

Devuelve true si la senda apunta a un enlace (simbólico o paquete).

#### Boolean isDir() <a href="#isdir" id="isdir"></a>

Devuelve true si la senda apunta a un directorio.

#### Boolean isExecutable() <a href="#isexecutable" id="isexecutable"></a>

Devuelve true si la senda apunta a un fichero ejecutable.

#### Boolean isFile() <a href="#isfile" id="isfile"></a>

Devuelve true si la senda apunta a un fichero o a un enlace simbólico.

#### Boolean isHidden() <a href="#ishidden" id="ishidden"></a>

Devuelve true si la senda apunta a un fichero o directorio oculto.

#### Boolean isReadable() <a href="#isreadable" id="isreadable"></a>

Devuelve true si la senda apunta a un fichero que puede ser leído.

#### Boolean isRelative() <a href="#isrelative" id="isrelative"></a>

Devuelve true si la senda apunta a un senda relativa.

#### Boolean isRoot() <a href="#isroot" id="isroot"></a>

Devuelve true si la senda apunta al directorio raíz o a un enlace simbólico del mismo.

#### Boolean isSymLink() <a href="#issymlink" id="issymlink"></a>

Devuelve true si la senda apunta a un enlace simbólico.

#### Boolean isWritable() <a href="#iswritable" id="iswritable"></a>

Devuelve true si la senda apunta a un fichero en el que se puede escribir.

#### DateTime lastModified() <a href="#lastmodified" id="lastmodified"></a>

Devuelve la fecha y hora de la última modificación del fichero.

#### DateTime lastRead() <a href="#lastread" id="lastread"></a>

Devuelve la fecha y hora de la última vez que el fichero fue leído o tuvo un acceso.

### Funciones de asignación

#### Boolean makeAbsolute() <a href="#makeabsolute" id="makeabsolute"></a>

Convierte el path del fichero en un senda absoluta. Devuelve true si la conversión ha finalizado correctamente. Si el path ya era absoluto devuelve false.

#### String owner() <a href="#owner" id="owner"></a>

Devuelve el nombre del propietario del fichero.

#### Number ownerId() <a href="#ownerid" id="ownerid"></a>

Devuelve el código (Id) del propietario del fichero

#### String path() <a href="#path" id="path"></a>

Devuelve la senda del fichero

#### Boolean permission( Number permissions ) <a href="#permission" id="permission"></a>

Chequea los permisos del fichero y devuelve true si el fichero los tiene.

Parámetros:

* permissions: number que indica los permisos. Ver enum de tipos de permisos del fichero en la clase [VFile](https://doc.velneo.com/29/velneo-vdevelop/scripts/lenguajes/javascript/clases/vfile)

#### Number permissions() <a href="#permissions" id="permissions"></a>

Devuelve el valor de los permisos del fichero. El valor devuelto es la suma (OR) de los valores de los permisos. Ver enum de permisos del fichero.

#### void refresh() <a href="#refresh" id="refresh"></a>

Refresca la información del fichero.

#### void setCaching( Boolean bEnable ) <a href="#setcaching" id="setcaching"></a>

Establece si el sistema tendrá caché de la información del fichero.

Parámetros:

* bEnable: booleano que indica true para que el sistema haga caché de la información del fichero.

#### void setFile( String szFilePath ) <a href="#setfile" id="setfile"></a>

Fija el fichero o directorio al que apuntará el objeto.

Parámetros:

* szFilePath = Path del fichero o directorio.

#### Number size() <a href="#size" id="size"></a>

Devuelve el tamaño del fichero en bytes.

#### String suffix() <a href="#suffix" id="suffix"></a>

Devuelve la extensión del fichero.

#### String symLinkTarget() <a href="#symlinktarget" id="symlinktarget"></a>

Devuelve la senda absoluta del fichero apuntado por el enlace simbólico o acceso directo.

## Ejemplos

### 1. Ejemplo de lectura de los ficheros del directorio raíz del sistema

```javascript
////////////////////////////////////////////////////////////
// Ejemplo de lectura de los ficheros del directorio raíz del sistema

// Para poder usar la clase VDir y sus funciones hay que importarla primero
importClass( "VDir" );

// Ss crear un objeto VDir con el directorio temporal de la aplicación
var dir = new VDir( theApp.rootPath() );

// Cargar la lista de ficheros y directorios
dir.load();

// Se inicializan las variables de trabajo
var filesNumber =0;
var totalSize = 0;
var filesList = "";

// Se recorren todos los ficheros del directorio
for ( i=0; i < dir.count(); i++ )
{
    // Se lee el fichero (Se obtiene un objeto VTableInfo)
    file = dir.entryAt( i );

    // Si es fichero se acumulan sus datos
    if ( file.isFile() ) {
        filesNumber++;
        totalSize += file.size();
        filesList += dir.entryAt( i ).filePath(file.path() ) + "\n";
    }
}

// Se visualizan los datos de todos los ficheros del directorio
alert( "En el directorio raíz (" + dir.path() + ")" + "\n" + 
        "Se han encontrado " + filesNumber.toString() + " ficheros: \n\n" + 
        filesList + "\n" + 
        "El tamaño total de los ficheros es " +  totalSize.toString() + " bytes." );
```
