FileSystem.FilePutObject(Int32, Object, Int64) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
, Short
e 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 Seek
FilePutObject
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 FileGetObject
e 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 daFileOpen
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 naRecordLength
cláusula daFileOpen
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 oVarType
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 comoVarType(3)
(Integer
) e quatro bytes que contêm os dados. O comprimento do registro especificado peloRecordLength
parâmetro naFileOpen
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 oVarType(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 peloRecordLength
parâmetro naFileOpen
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 passarTrue
para o parâmetroStringIsFixedLength
, 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 naFileOpen
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 deFileOpen
não está em vigor.FilePutObject
grava todas as variáveis no disco contíguamente, ou seja, sem preenchimento entre registros.