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 My recurso oferece melhor produtividade e desempenho em operações de E/S de 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
Required. Qualquer número de arquivo válido.
- Value
- Object
Required. Nome de variável válido que contém dados gravados em disco.
- RecordNumber
- Int64
Optional. Número de registro (Random arquivos de modo) ou número de byte (Binary arquivos de modo) no qual a gravação é iniciada.
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 evitar ambiguidades em tempo de compilação se o tipo Object for passado em vez de outro tipo, comoInteger, , LongShorte 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 modo e Binary no Random modo.
Os dados gravados geralmente FilePutObject são lidos de um arquivo 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 você omitir RecordNumber, FilePutObject gravará o próximo registro ou byte após a última FileGetObject ou FilePutObject função (ou o registro ou byte apontado pela última Seek função).
O StringIsFixedLength argumento controla se a função interpreta cadeias de caracteres como variável ou comprimento fixo.
FilePutObject não grava o descritor de comprimento quando o argumento é True. Se você usar StringIsFixedLength = True com FilePutObject, terá que fazer o mesmo com FileGetObjecte também deve 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 nos limites de comprimento do registro. O espaço entre o final de um registro e o início do próximo registro é adicionado 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 do que o comprimento especificado naRecordLengthcláusula daFileOpenfunção, uma exceção será gerada.Se a variável que está sendo gravada for um objeto que contém um tipo numérico,
FilePutObjectgravará dois bytes identificando oVarTypeobjeto e gravará 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)objeto, um descritor de dois bytes que indica o comprimento da cadeia de caracteres e grava os dados da cadeia de caracteres. O comprimento doRecordLengthregistro especificado pelo parâmetro naFileOpenfunção deve ser pelo menos quatro bytes maior que o comprimento real da cadeia de caracteres. Se você quiser colocar uma cadeia de caracteres sem o descritor, deverá passarTruepara oStringIsFixedLengthparâmetro e a cadeia de caracteres em que você leu deve ser o comprimento 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
RecordLengthcláusula naFileOpenfunção não tem efeito.FilePutObjectgrava todas as variáveis no disco contíguamente, ou seja, sem preenchimento entre registros.