FileSystem.FileGetObject(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.
Lê dados de um arquivo aberto de disco em uma variável. O recurso My
oferece melhor produtividade e desempenho em operações de E/S do arquivo do que FileGetObject
. Para obter mais informações, consulte FileSystem.
public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef 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 no qual os dados são lidos.
- RecordNumber
- Int64
Opcional. Registre o número (arquivos de modo Random
) ou número de byte (arquivos de modo Binary
) no qual a leitura começa.
Exemplos
O exemplo a seguir lê um registro em um arquivo de teste e o recupera.
Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)
Comentários
A FileGetObject
função é usada em vez de FileGet
para evitar ambiguidades em tempo de compilação se o tipo Object
for retornado em vez de outro tipo, como Integer
, Long
, Short
e assim por diante.
Se você pretende gravar o Variant
tipo, FileGetObject
é necessário. Em caso de dúvida, se você estiver usando um objeto para o segundo parâmetro, sempre será sugerido que você use FilePutObject
e FileGetObject
.
FileGetObject
é válido somente no Random
modo e Binary
.
Os dados lidos com FileGetObject
geralmente são gravados com FilePutObject
.
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
, lerá o registro ou byte após a última FileGetObject
função ou FilePutObject
(ou apontado pela última Seek
FileGetObject
função).
Modo Aleatório
Para arquivos abertos no Random
modo , as seguintes regras se aplicam:
Se o comprimento dos dados que estão sendo lidos for menor que o comprimento especificado na
RecordLength
cláusula daFileOpen
função,FileGetObject
lerá os 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 é preenchido com o conteúdo existente do buffer de arquivos. Como a quantidade de dados de preenchimento não pode ser determinada com precisão, é uma boa ideia fazer com que o comprimento do registro corresponda ao comprimento dos dados que estão sendo lidos.Se a variável que está sendo lida for uma cadeia de caracteres, por padrão, lerá
FileGetObject
um descritor de dois bytes que contém o comprimento da cadeia de caracteres e lerá os dados que entram na variável. Portanto, o comprimento do registro especificado pelaRecordLength
cláusula daFileOpen
função deve ser pelo menos dois bytes maior que o comprimento real da cadeia de caracteres. O Visual Basic 6.0 e versões anteriores dão suporte a cadeias de caracteres de comprimento fixo e, quando lido em um arquivo, o descritor de comprimento não é gravado. Se você quiser ler uma cadeia de caracteres sem o descritor, deverá passarTrue
para oStringIsFixedLength
parâmetro e a cadeia de caracteres em que você leu deve ter o comprimento correto.Se a variável que está sendo lida for uma matriz, o comprimento do registro especificado pelo
RecordLength
parâmetro naFileOpen
função deverá ser maior ou igual à soma de todos os bytes necessários para gravar os dados da matriz e o descritor de 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.Por exemplo, a seguinte declaração de matriz requer 218 bytes quando a matriz é gravada no disco:
Dim MyArray(4, 9) As Integer
Os 218 bytes são distribuídos da seguinte maneira: 18 bytes para o descritor (2 + 8 * 2) e 100 bytes para os dados (5 * 10 * 4).
FileGetObject
lê elementos de estruturas como se cada um estivesse sendo lido individualmente, exceto que não há preenchimento entre elementos. No disco, uma matriz dinâmica em um tipo definido pelo usuário (escrito comFilePutObject
) é prefixada por um descritor cujo comprimento é igual a 2 mais 8 vezes o número de dimensões: 2 + 8 * NumberOfDimensions. O comprimento doRecordLength
registro especificado pela cláusula naFileOpen
função deve ser maior ou igual à soma de todos os bytes necessários para ler os elementos individuais, incluindo quaisquer matrizes e seus descritores. A VBFixedStringAttribute classe pode ser aplicada a campos de cadeia de caracteres nas estruturas para indicar o tamanho da cadeia de caracteres quando gravada em disco.
Modo binário
Para arquivos abertos no Binary
modo , todas as Random
regras se aplicam, com estas exceções:
A cláusula
RecordLength
na função deFileOpen
não está em vigor.FileGetObject
lê todas as variáveis do disco de forma contígua, ou seja, sem preenchimento entre registros.Para qualquer matriz que não seja uma matriz em uma estrutura,
FileGetObject
lê apenas os dados. Nenhum descritor é lido.
FileGetObject
lê cadeias de caracteres de comprimento variável que não são elementos de estruturas sem esperar o descritor de comprimento de dois bytes. O número de bytes lidos é igual ao número de caracteres que já estão na cadeia de caracteres.
Importante
Ao ler de arquivos, não tome decisões sobre o conteúdo de um arquivo com base na extensão de nome de arquivo. Por exemplo, um arquivo chamado Form1.vb pode não ser um arquivo de origem do Visual Basic.