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, 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
RecordLengthcláusula daFileOpenfunção,FilePutObjectgravará 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 naRecordLengthcláusula daFileOpenfunção, uma exceção será gerada.Caso a variável que está sendo gravada seja um objeto que contém um tipo numérico,
FilePutObjectgrava dois bytes que identificam oVarTypedo objeto e, em seguida, grava a variável. Por exemplo, ao escrever um objeto que contém um inteiro,FilePutObjectgrava seis bytes: dois bytes que identificam o objeto comoVarType(3)(Integer) e quatro bytes que contêm os dados. O comprimento do registro especificado peloRecordLengthparâmetro naFileOpenfunçã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,
FilePutObjectgravará 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 peloRecordLengthparâmetro naFileOpenfunçã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 passarTruepara 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
RecordLengthcláusula naFileOpenfunçã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
RecordLengthna função deFileOpennão está em vigor.FilePutObjectgrava todas as variáveis no disco contíguamente, ou seja, sem preenchimento entre registros.