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

Definição

Escreve dados de uma variável para um ficheiro de disco. A My funcionalidade dá-lhe melhor produtividade e desempenho nas operações de I/O de ficheiros do que FilePutObject. Para obter mais informações, veja 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

Required. Qualquer número de ficheiro válido.

Value
Object

Required. Nome válido de variável que contém dados escritos no disco.

RecordNumber
Int64

Optional. Número de registo (Random ficheiros mode) ou número de byte (Binary ficheiros mode) onde a escrita começa.

Exemplos

Este exemplo usa a FilePutObject função para escrever uma string num ficheiro.

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

Observações

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, Short, e assim sucessivamente.

FilePutObject escreve e lê descritores que descrevem o objeto. Se pretende escrever o Variant tipo, FilePutObject é obrigatório. Em caso de dúvida, se estiver a usar um objeto para o segundo parâmetro, recomendamos que use FilePutObject sempre e FileGetObject.

FilePutObject é válido apenas em Random modo e Binary .

Os dados escritos com FilePutObject são geralmente lidos de um ficheiro usando FileGetObject.

O primeiro registo ou byte num ficheiro está na posição 1, o segundo registo ou byte está na posição 2, e assim sucessivamente. Se omitir RecordNumber, FilePutObject escreve o próximo registo ou byte após o último FileGetObject ou FilePutObject função (ou o registo ou byte apontado pela última Seek função).

O StringIsFixedLength argumento controla se a função interpreta as cadeias como comprimento variável ou fixo. FilePutObject não escreve o descritor de comprimento quando o argumento é True. Se usar StringIsFixedLength = True com FilePutObject, tem de fazer o mesmo com FileGetObject, e também deve garantir que a cadeia está inicializada ao comprimento esperado.

Modo Aleatório

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

  • Se o comprimento dos dados a ser escritos for inferior ao comprimento especificado na RecordLength cláusula da FileOpen função, FilePutObject escreve registos subsequentes nas fronteiras do comprimento do registo. O espaço entre o fim de um registo e o início do registo seguinte é preenchido com o conteúdo existente do buffer de ficheiros. Como a quantidade de dados de enchimento não pode ser determinada com precisão, é geralmente aconselhável que o comprimento do registo coincida com o comprimento dos dados a escrever. Se o comprimento dos dados a ser escritos for maior do que o comprimento especificado na RecordLength cláusula da FileOpen função, é lançada uma exceção.

  • Se a variável que está a ser escrita for um objeto que contém um tipo numérico, FilePutObject escreve dois bytes identificando o VarType do objeto e depois escreve a variável. Por exemplo, ao escrever um objeto que contém um inteiro, FilePutObject escreve seis bytes: dois bytes que identificam o objeto como VarType(3) (Integer) e quatro bytes que contêm os dados. O comprimento do registo especificado pelo RecordLength parâmetro na FileOpen função deve ser pelo menos dois bytes superior ao número real de bytes necessários para armazenar a variável.

  • Se a variável a escrever for um objeto que contém uma cadeia, FilePutObject escreve um descritor de dois bytes que identifica o VarType(8) do objeto, um descritor de dois bytes que indica o comprimento da cadeia e depois escreve os dados da cadeia. O comprimento do registo especificado pelo RecordLength parâmetro na FileOpen função deve ser pelo menos quatro bytes superior ao comprimento real da cadeia. Se quiseres colocar uma cadeia sem o descriptor, deves passar True para o StringIsFixedLength parâmetro, e a cadeia em que leste deve ter o comprimento correto.

  • Se a variável a escrever for um array, então o comprimento do registo especificado pela RecordLength cláusula na FileOpen função deve ser maior ou igual à soma de todos os bytes necessários para escrever os dados do array e o descritor do array. O descritor especifica o posto do array, o tamanho e os limites inferiores para cada rank. O seu comprimento é igual a 2 mais 8 vezes o número de dimensões: (2 + 8 * NúmeroDeDimensões).

Modo Binário

Para ficheiros abertos no Binary modo, aplicam-se todas as Random regras do modo, exceto:

  • A RecordLength cláusula na FileOpen função não tem efeito. FilePutObject escreve todas as variáveis no disco de forma contígua, ou seja, sem preenchimento entre registos.

Aplica-se a

Ver também