FileSystem.FilePutObject(Int32, Object, Int64) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
RecordLengthcláusula daFileOpenfunção,FilePutObjectescreve 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 naRecordLengthcláusula daFileOpenfunçã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,
FilePutObjectescreve dois bytes identificando oVarTypedo objeto e depois escreve a variável. Por exemplo, ao escrever um objeto que contém um inteiro,FilePutObjectescreve seis bytes: dois bytes que identificam o objeto comoVarType(3)(Integer) e quatro bytes que contêm os dados. O comprimento do registo especificado peloRecordLengthparâmetro naFileOpenfunçã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,
FilePutObjectescreve um descritor de dois bytes que identifica oVarType(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 peloRecordLengthparâmetro naFileOpenfunção deve ser pelo menos quatro bytes superior ao comprimento real da cadeia. Se quiseres colocar uma cadeia sem o descriptor, deves passarTruepara oStringIsFixedLengthparâ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
RecordLengthcláusula naFileOpenfunçã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
RecordLengthcláusula naFileOpenfunção não tem efeito.FilePutObjectescreve todas as variáveis no disco de forma contígua, ou seja, sem preenchimento entre registos.