¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
FilePut (Método) (Int32, Array, Int64, Boolean, Boolean)
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

FileSystem.FilePut (Método) (Int32, Array, Int64, Boolean, Boolean)

Escribe los datos de una variable en un archivo de disco. La característica My ofrece más productividad y rendimiento que FilePut en las operaciones de E/S de archivo. Para obtener más información, vea FileSystem.

Espacio de nombres:  Microsoft.VisualBasic
Ensamblado:  Microsoft.VisualBasic (en Microsoft.VisualBasic.dll)

public static void FilePut(
	int FileNumber,
	Array Value,
	long RecordNumber,
	bool ArrayIsDynamic,
	bool StringIsFixedLength
)

Parámetros

FileNumber
Tipo: System.Int32
Requerido. Cualquier número de archivo válido.
Value
Tipo: System.Array
Requerido. Nombre válido de variable que contiene los datos escritos en disco.
RecordNumber
Tipo: System.Int64
Opcional. Número de registro (archivos en modo Random) o número de byte (archivos en modo Binary) en el que comienza la escritura.
ArrayIsDynamic
Tipo: System.Boolean
Opcional. Sólo se aplica al escribir una matriz. Especifica si la matriz se va a tratar como una matriz dinámica y si se va a escribir un descriptor de matriz para la cadena que describe la longitud.
StringIsFixedLength
Tipo: System.Boolean
Opcional. Se aplica sólo al escribir una cadena. Especifica si se va a escribir un descriptor de longitud de cadena de 2 bytes para la cadena en el archivo. El valor predeterminado es False.

ExcepciónCondición
ArgumentException

RecordNumber < 1 y distinto de -1.

IOException

FileNumber no existe.

IOException

El modo de archivo no es válido.

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

Los datos escritos con FilePut se leen normalmente de un archivo mediante FileGet.

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, se escribe el registro o byte que sigue a la última función FileGet o FilePut, o al que señale la última función Seek.

El argumento StringIsFixedLength controla si la función interpreta las cadenas como variable o longitud fija. FilePut no escribe el descriptor de longitud cuando el argumento es True. Si utiliza StringIsFixedLength = True con FilePut, debe hacer lo mismo con FileGet y 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, FilePut escribirá los registros subsiguientes 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, 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 una cadena, FilePut escribe un descriptor de dos bytes que contiene la longitud de la cadena y, a continuación, escribe los datos que se van a incluir en la variable. Por tanto, la longitud de registro especificada por la cláusula RecordLength en la función FileOpen debe ser, como mínimo, 2 bytes mayor que la longitud real de la cadena.

  • Si la variable que se está escribiendo es un objeto que contiene un tipo numérico, FilePut escribe dos bytes que identifican la función VarType del objeto y, a continuación, escribe la variable. Por ejemplo, al escribir un objeto que contiene un entero, FilePut 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, FilePut escribe un descriptor de dos bytes que identifica la función VarType(8) del objeto, un descriptor de dos bytes que indica la longitud de la cadena y, por último, escribe 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 colocar una cadena sin el descriptor, debe pasar True al parámetro StringIsFixedLength y la cadena que se lea debe tener la longitud correcta.

  • Si la variable que se está escribiendo es una matriz, puede elegir si desea escribir o no un descriptor con el tamaño y dimensiones de la matriz. Visual Basic 6.0 y otras versiones anteriores escribían el descriptor de archivos de las matrices dinámicas, pero no el de las matrices de tamaño fijo. De manera predeterminada, Visual Basic 2005 no escribe el descriptor. Para escribirlo, establezca el parámetro ArrayIsDynamic en True. Al escribir la matriz, debe detallar la forma en que se efectuará su lectura: si va a leerse con el descriptor, entonces 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. Por ejemplo, la siguiente declaración de matriz requiere 218 bytes cuando la matriz se escribe en disco:

    
    Dim MyArray(4, 9) As Integer
    
    
    
  • Si la variable que se esté escribiendo es de cualquier otro tipo (no una cadena de longitud variable ni un objeto), FilePut sólo escribirá los datos de la variable. La longitud de registro especificada por la cláusula RecordLength en la función FileOpen debe ser mayor o igual que la longitud de los datos que se estén escribiendo.

  • FilePut escribe elementos de estructuras como si cada uno de ellos estuviese escrito por separado, con la excepción de que no existe relleno entre ellos. El atributo VBFixedString puede aplicarse a campos de cadena de las estructuras para indicar el tamaño de la cadena cuando se escribe en disco.

    NotaNota

    Los campos de cadena que tienen más bytes de lo especificado por el atributo VBFixedString se trunca cuando se escribe en el 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 siguientes reglas para los archivos abiertos en modo Binary difieren de las reglas aplicables al modo Random :

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

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

  • FilePut escribe las cadenas de longitud variable que no sean elementos de estructuras sin el descriptor de longitud de dos bytes. El número de bytes escrito es igual al número de caracteres de la cadena. Por ejemplo, en las siguientes instrucciones se escribe 11 bytes en el archivo número 1:

    
    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
    
    
  • La escritura de un archivo con la función FilePut requiere el acceso de tipo Write de la enumeración FileIOPermissionAccess.

En este ejemplo se utiliza la función FilePut para escribir datos en un archivo. En el archivo se escriben cinco registros de la estructura Person.


Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft