Compartilhar via


FileSystem.FilePutObject(Int32, Object, Int64) Método

Definição

Grava dados de uma variável em um arquivo de disco. O recurso My oferece melhor produtividade e desempenho em operações de E/S do arquivo do que FilePutObject. Para obter mais informações, consulte FileSystem.

public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

Parâmetros

FileNumber
Int32

Obrigatórios. Qualquer número de arquivo válido.

Value
Object

Obrigatórios. Nome de variável válido que contém dados gravados em disco.

RecordNumber
Int64

Opcional. Registre o número (arquivos de modo Random) ou número de byte (arquivos de modo Binary) no qual a gravação começa.

Exemplos

Este exemplo usa a FilePutObject função para gravar uma cadeia de caracteres em um arquivo.

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

Comentários

A FilePutObject função é usada em vez de FilePut para evitar ambiguidades em tempo de compilação se o tipo Object for passado em vez de outro tipo, como Integer, Long, Shorte assim por diante.

FilePutObject grava e lê descritores que descrevem o objeto . Se você pretende escrever o Variant tipo, FilePutObject é necessário. Em caso de dúvida, se você estiver usando um objeto para o segundo parâmetro, recomendamos que você sempre use FilePutObject e FileGetObject.

FilePutObject é válido somente no Random modo e Binary .

Dados gravados com FilePutObject costumam ser lidos a partir de um arquivo usando FileGetObject.

O primeiro registro ou byte em um arquivo está na posição 1, o segundo registro ou byte está na posição 2 e assim por diante. Se você omitir RecordNumber, gravará o próximo registro ou byte após a última FileGetObject função ou FilePutObject (ou o registro ou byte apontado pela última SeekFilePutObject função).

O argumento StringIsFixedLength controla se a função interpreta cadeias de caracteres como sendo de tamanho variável ou fixo. FilePutObject não grava o descritor de comprimento quando o argumento é True. Se você usar StringIsFixedLength = True com FilePutObject, precisará fazer o mesmo com FileGetObjecte também deverá garantir que a cadeia de caracteres seja inicializada para o comprimento esperado.

Modo Aleatório

Para arquivos abertos no Random modo , as seguintes regras se aplicam:

  • Se o comprimento dos dados que estão sendo gravados for menor que o comprimento especificado na RecordLength cláusula da FileOpen função, FilePutObject gravará registros subsequentes em limites de comprimento de registro. O espaço entre o final de um registro e o início do próximo registro é preenchido com o conteúdo existente do buffer de arquivo. Como a quantidade de dados de preenchimento não pode ser determinada com precisão, geralmente é uma boa ideia fazer com que o comprimento do registro corresponda ao comprimento dos dados que estão sendo gravados. Se o comprimento dos dados que estão sendo gravados for maior que o comprimento especificado na RecordLength cláusula da FileOpen função, uma exceção será gerada.

  • Caso a variável que está sendo gravada seja um objeto que contém um tipo numérico, FilePutObject grava dois bytes que identificam o VarType do objeto e, em seguida, grava a variável. Por exemplo, ao escrever um objeto que contém um inteiro, FilePutObject grava seis bytes: dois bytes que identificam o objeto como VarType(3) (Integer) e quatro bytes que contêm os dados. O comprimento do registro especificado pelo RecordLength parâmetro na FileOpen função deve ser pelo menos dois bytes maior que o número real de bytes necessários para armazenar a variável.

  • Se a variável que está sendo gravada for um objeto que contém uma cadeia de caracteres, FilePutObject gravará um descritor de dois bytes identificando o VarType(8) do objeto, um descritor de dois bytes que indica o comprimento da cadeia de caracteres e grava os dados da cadeia de caracteres. O comprimento do registro especificado pelo RecordLength parâmetro na FileOpen função deve ser pelo menos quatro bytes maior que o comprimento real da cadeia de caracteres. Caso queira colocar uma cadeia de caracteres sem o descritor, você deve passar True para o parâmetro StringIsFixedLength, e a cadeia de caracteres lida deve ter o tamanho correto.

  • Se a variável que está sendo gravada for uma matriz, o comprimento do registro especificado pela RecordLength cláusula na FileOpen função deverá ser maior ou igual à soma de todos os bytes necessários para gravar os dados da matriz e o descritor da matriz. O descritor especifica a classificação da matriz, o tamanho e os limites inferiores para cada classificação. Seu comprimento é igual a 2 mais 8 vezes o número de dimensões: (2 + 8 * NumberOfDimensions).

Modo binário

Para arquivos abertos no Binary modo, todas as regras de Random modo se aplicam, exceto:

  • A cláusula RecordLength na função de FileOpen não está em vigor. FilePutObject grava todas as variáveis no disco contíguamente, ou seja, sem preenchimento entre registros.

Aplica-se a

Confira também