FilePutObject (Función)

Actualización: noviembre 2007

Escribe datos de una variable en un archivo de disco.

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

Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Object, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Double, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      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 válido de variable que contiene los datos escritos en disco.

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

  • ArrayIsDynamic
    Opcional. Sólo se aplica cuando se escribe una matriz. Especifica si se ha de tratar a la matriz como dinámica y si se ha de escribir un descriptor de matriz para la cadena que detalla la longitud.

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

Comentarios

La función FilePutObject se utiliza en lugar de FilePut para evitar ambigüedades en tiempo de compilación si se pasa el tipo Object en vez de otro tipo, como Integer, Long, Short, etc.

FilePutObject escribe y lee descriptores que describen el objeto. Si desea escribir el tipo Variant, se requiere FilePutObject. Si tiene dudas y está utilizando un objeto para el segundo parámetro, conviene utilizar siempre FilePutObject y FileGetObject.

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

Los datos escritos con FilePutObject normalmente se leen desde un archivo con FileGetObject.

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 se omite RecordNumber, FilePutObject escribe el siguiente registro o byte después de la última función FileGetObject o FilePutObject (o el registro o byte al que señale la última función Seek).

El argumento StringIsFixedLength controla si la función interpreta las cadenas como cadenas de longitud fija o variable. FilePutObject no escribe el descriptor de longitud cuando el argumento es True. Si se utiliza StringIsFixedLength = True con FilePutObject, deberá hacer lo mismo con FileGetObject y deberá comprobar también que la cadena se inicializa con la longitud esperada.

Modo Random

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

  • Si la longitud de los datos que se estén escribiendo es menor que la especificada en la cláusula RecordLength de la función FileOpen, FilePutObject escribirá los registros posteriores en los límites de longitud de registro. El espacio comprendido entre el final de un registro y el principio del siguiente se rellena con el contenido existente del búfer del archivo. Como no se puede determinar con exactitud la cantidad de datos de relleno, suele ser una buena idea hacer que la longitud del registro coincida con la de los datos que se estén escribiendo. Si la longitud de los datos que se escriben es mayor que la especificada en la cláusula RecordLength de la función FileOpen, se producirá una excepción.

  • Si la variable que se está escribiendo es un objeto que contiene un tipo numérico, FilePutObject escribirá dos bytes para identificar el VarType del objeto y, a continuación, escribirá la variable. Por ejemplo, al escribir un objeto con un entero, FilePutObject escribe seis bytes: dos bytes identifican el objeto como VarType(3) (Integer) y los otros cuatro bytes contienen los datos. La longitud de registro especificada por el parámetro RecordLength en la función FileOpen debe ser, como mínimo, 2 bytes mayor que el número real de bytes necesario para almacenar la variable.

  • Si la variable que se está escribiendo es un objeto que contiene una cadena, FilePutObject escribirá un descriptor de dos bytes para identificar el VarType(8) del objeto, un descriptor de dos bytes para indicar la longitud de la cadena y, por último, escribirá los datos de la cadena. La longitud de registro especificada por el parámetro RecordLength en la función FileOpen debe ser, como mínimo, cuatro bytes mayor que la longitud real de la cadena. Si desea escribir una cadena sin el descriptor, debe pasar un valor True al parámetro StringIsFixedLength y la cadena que lea debe tener la longitud correcta.

  • Si la variable que se esté escribiendo es una matriz, puede elegir escribir un descriptor con el tamaño y dimensiones de la matriz. Visual Basic 6.0 y otras versiones anteriores escribían el descriptor de archivo de las matrices dinámicas, pero no el de las matrices de tamaño fijo; de manera predeterminada, Visual Basic no escribe el descriptor. Para escribirlo, establezca el parámetro ArrayIsDynamic en True. Al escribir la matriz, deberá detallar la forma en que se efectúa la lectura: si se lee con el descriptor, deberá escribirlo. 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 la cláusula RecordLength en 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.

Modo Binary

En los archivos abiertos en modo Binary, se aplicarán todas las reglas del modo Random excepto:

  • La cláusula RecordLength de la función FileOpen no tiene ningún efecto. FilePutObject escribe todas las variables en el disco una detrás de otra, es decir, sin dejar relleno entre los registros.

Ejemplo

En este ejemplo se utiliza la función FilePutObject para escribir una cadena en un archivo.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Notas para desarrolladores de dispositivos inteligentes

Esta función no es compatible.

Requisitos

Espacio de nombres:Microsoft.VisualBasic

**Módulo:**FileSystem

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

Vea también

Referencia

FileGet (Función)

FileOpen (Función)

Seek (Función)

FilePut (Función)

My.Computer.FileSystem (Objeto)

Otros recursos

Escribir en archivos en Visual Basic