FileGet (Función)

Actualización: noviembre 2007

Lee datos de un archivo de disco abierto y los coloca en una variable.

La característica My proporciona mayor productividad y rendimiento que FileGet en las operaciones de E/S de archivos. Para obtener más información, vea My.Computer.FileSystem (Objeto).

Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Object, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Double, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Public Overloads Sub FileGet(
   ByVal FileNumber As Integer, _
   ByRef Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

Parámetros

  • FileNumber
    Obligatorio. Cualquier número de archivo válido.

  • Value
    Obligatorio. Nombre de variable válido en el que se leen los datos.

  • RecordNumber
    Opcional. Número de registro (archivos en modo Random) o número de byte (archivos en modo Binary) en el que comienza la lectura.

  • ArrayIsDynamic
    Opcional. Sólo se aplica cuando se escribe una matriz. Especifica si se ha de tratar la matriz como dinámica y si es necesario un descriptor de matriz que describa el tamaño y los límites de la matriz.

  • StringIsFixedLength
    Opcional. Sólo se aplica cuando se escribe una cadena. Especifica si se va a escribir un descriptor de dos bytes para la cadena que describe la longitud. El valor predeterminado es False.

Excepciones

Tipo de excepción

Número de error

Condición

ArgumentException

63

RecordNumber < 1 y distinto de -1.

IOException

52

FileNumber no existe.

IOException

54

El modo de archivo no es válido.

Consulte la columna "Número de error" si está actualizando aplicaciones de Visual Basic 6.0 que utilizan el control de errores no estructurado. (Se puede comparar el número de error con respecto a Number (Propiedad, objeto Err)). Sin embargo, siempre que sea posible, debe considerarse la posibilidad de sustituir dicho control de errores por Información general sobre el control estructurado de excepciones de Visual Basic.

Comentarios

FileGet sólo es válido en los modos Random y Binary.

Los datos leídos con FileGet se escriben normalmente en un archivo con FilePut.

El primer registro o byte de un archivo se encuentra en la posición 1, el segundo en la posición 2 y así sucesivamente. Si omite RecordNumber, se lee el siguiente registro o byte que siga a la última función FileGet o FilePut (o al que señale la última función Seek).

Nota de seguridad:

Cuando se leen archivos, no deben tomarse decisiones acerca del contenido de un archivo basándose en la extensión del nombre de archivo. Por ejemplo, un archivo denominado Form1.vb puede no ser un archivo de código fuente de Visual Basic.

Modo aleatorio

Con los archivos abiertos en modo Random, se aplican las siguientes reglas:

  • Si la longitud de los datos que se estén leyendo es menor que la especificada en la cláusula RecordLength de la función FileOpen, FileGet leerá los registros posteriores en los límites de longitud de registro. El espacio comprendido entre el final de un registro y el inicio del siguiente se rellena con el contenido existente del búfer del archivo. Como no se puede determinar con seguridad la cantidad de datos de relleno, se recomienda en general que la longitud del registro coincida con la de los datos que se estén leyendo.

  • De forma predeterminada, si la variable que se está leyendo es una cadena, FileGet lee primero un descriptor de dos bytes que contiene la longitud de la cadena y, a continuación, la información destinada a la variable. Por tanto, la longitud de registro especificada por la cláusula RecordLength de la función FileOpen ha de ser, como mínimo, dos bytes mayor que la longitud real de la cadena. Visual Basic 6.0 y otras versiones anteriores admiten cadenas de longitud fija; cuando se colocan en un archivo, no se escribe el descriptor de longitud. Si desea leer una cadena sin el descriptor, debería pasar True al parámetro StringIsFixedLength y la cadena que lea debería tener la longitud correcta.

  • Si la variable que se esté leyendo es una matriz, puede elegir leer un descriptor con el tamaño y dimensiones de la matriz. Para escribirlo, establezca el parámetro ArrayIsDynamic en True. Al leer la matriz, debe hacerlo de la misma forma en que se escribió la matriz. Si se escribió con el descriptor, deberá leer el descriptor. Si no se utilizó el descriptor, el tamaño y los límites de la matriz pasados a FileGet determinan qué es lo que se debe leer.

    El descriptor especifica tanto el rango de la matriz, como el tamaño y los límites inferiores de cada rango. Su longitud es igual a 2 más 8 veces el número de dimensiones: (2 + 8 * NumberOfDimensions). La longitud de registro especificada por el parámetro RecordLength de la función FileOpen debe ser mayor o igual que la suma de todos los bytes necesarios para escribir los datos y el descriptor de la matriz. Por ejemplo, la siguiente declaración de matriz requiere 218 bytes cuando la matriz se escribe en disco:

    Dim MyArray(4,9) As Integer
    

    Los 218 bytes se distribuyen del modo siguiente:

    • 18 bytes para el descriptor: (2 + 8 * 2)

    • 200 bytes para los datos: (5 * 10 * 4)

  • Si la variable que se está leyendo es de cualquier otro tipo (no una cadena de longitud variable o un objeto), FileGet únicamente leerá los datos variables. La longitud de registro especificada por la cláusula RecordLength de la función FileOpen debe ser mayor o igual que la longitud de los datos que se estén leyendo.

  • FileGet lee elementos de estructuras como si cada uno de ellos se estuviera leyendo por separado, con la excepción de que no existe relleno entre ellos. En disco, las matrices dinámicas de tipos definidos por el usuario (escritas con FilePut) vienen prefijadas con un descriptor cuya longitud es igual a 2 más 8 veces el número de dimensiones: (2 + 8 * NumberOfDimensions). La longitud de registro especificada por la cláusula RecordLength en la función FileOpen debe ser mayor o igual que la suma de todos los bytes necesarios para leer los elementos individuales. Esto incluye las matrices y sus descriptores. El atributo VBFixedString puede aplicarse a campos de cadena de las estructuras para indicar el tamaño de una cadena cuando se escribe en disco.

Modo binario

La mayor parte de las reglas de modo Random se aplican a los archivos abiertos en modo Binary, con ciertas excepciones. Las reglas siguientes para los archivos abiertos en modo Binary difieren de las reglas para el modo Random :

  • La cláusula RecordLength de la función FileOpen no tiene ningún efecto. FileGet lee todas las variables desde el disco de forma contigua, es decir, sin relleno entre los registros.

  • En el caso de matrices no asociadas a estructuras, FileGet leerá únicamente los datos. No se leerá ningún descriptor.

  • FileGet lee las cadenas de longitud variable que no sean elementos de estructuras sin esperar el descriptor de longitud de dos bytes. El número de bytes leídos es igual al número de caracteres existentes en la cadena.

    Nota de seguridad:

    Para leer un archivo con la función FileGet, es necesario tener acceso de tipo Read desde la enumeración FileIOPermissionAccess.

Notas para desarrolladores de dispositivos inteligentes

Esta función no está admitida.

Requisitos

Espacio de nombres:Microsoft.VisualBasic

**Módulo:**FileSystem

**Ensamblado:**Visual Basic Runtime Library (en Microsoft.VisualBasic.dll)

Vea también

Referencia

FileOpen (Función)

FilePut (Función)

Seek (Función)

FileGetObject (Función)

Otros recursos

Leer archivos en Visual Basic

Escribir en archivos en Visual Basic