FileSystem.FileGetObject(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.
Lê dados de um ficheiro de disco aberto para uma variável. A My funcionalidade dá-lhe melhor produtividade e desempenho nas operações de I/O de ficheiros do que FileGetObject. Para obter mais informações, veja 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
Required. Qualquer número de ficheiro válido.
- Value
- Object
Required. Nome válido da variável em que os dados são lidos.
- RecordNumber
- Int64
Optional. Número de registo (Random ficheiros modo) ou número de byte (Binary ficheiros modo) onde a leitura começa.
Exemplos
O exemplo seguinte lê um registo num ficheiro de teste e depois recupera-o.
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)
Observações
A FileGetObject função é usada em vez de FileGet para evitar ambiguidades em tempo de compilação se o tipo Object for devolvido em vez de outro tipo, como Integer, Long, Short, e assim sucessivamente.
Se pretende escrever o Variant tipo, FileGetObject é obrigatório. Em caso de dúvida, se estiver a usar um objeto para o segundo parâmetro, é sempre sugerido que use FilePutObject e FileGetObject.
FileGetObject é válido apenas em Random modo e Binary .
Os dados lidos com FileGetObject são geralmente escritos com FilePutObject.
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, FileGetObject lê o registo ou byte após a última FileGetObject ou FilePutObject função (ou apontada pela última Seek função).
Modo Aleatório
Para ficheiros abertos no Random modo, aplicam-se as seguintes regras:
Se o comprimento dos dados a ser lidos for inferior ao comprimento especificado na
RecordLengthcláusula daFileOpenfunção,FileGetObjectlê 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, é aconselhável que o comprimento do registo coincida com o comprimento dos dados a serem lidos.Se a variável em que se é lida for uma cadeia, por defeito
FileGetObjectlê um descritor de dois bytes contendo o comprimento da cadeia e depois lê os dados que entram na variável. Portanto, o comprimento do registo especificado pelaRecordLengthcláusula daFileOpenfunção deve ser pelo menos dois bytes maior do que o comprimento real da cadeia. O Visual Basic 6.0 e versões anteriores suportam cadeias de comprimento fixo e, quando lidas num ficheiro, o descritor de comprimento não é escrito. Se quiseres ler uma cadeia sem o descriptor, deves passarTruepara oStringIsFixedLengthparâmetro, e a cadeia em que leste deve ter o comprimento correto.Se a variável em que se é lida for um array, então o comprimento do registo especificado pelo
RecordLengthparâmetro 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.Por exemplo, a seguinte declaração do array requer 218 bytes quando o array é escrito no disco:
Dim MyArray(4, 9) As IntegerOs 218 bytes estão distribuídos da seguinte forma: 18 bytes para o descritor (2 + 8 * 2) e 100 bytes para os dados (5 * 10 * 4).
FileGetObjectlê elementos das estruturas como se cada um estivesse a ser lido individualmente, exceto que não há preenchimento entre elementos. No disco, um array dinâmico num tipo definido pelo utilizador (escrito comFilePutObject) é precedido por um descritor cujo comprimento é igual a 2 mais 8 vezes o número de dimensões: 2 + 8 * NumberOfDimensions. O comprimento do registo especificado pelaRecordLengthcláusula naFileOpenfunção deve ser maior ou igual à soma de todos os bytes necessários para ler os elementos individuais, incluindo quaisquer arrays e os seus descritores. A VBFixedStringAttribute classe pode ser aplicada a campos de strings nas estruturas para indicar o tamanho da string quando escrita no disco.
Modo Binário
Para ficheiros abertos no Binary modo, aplicam-se todas as Random regras, com estas exceções:
A
RecordLengthcláusula naFileOpenfunção não tem efeito.FileGetObjectlê todas as variáveis do disco de forma contínua, ou seja, sem preenchimento entre registos.Para qualquer array que não seja um array numa estrutura,
FileGetObjectlê apenas os dados. Não é lido qualquer descritor.
FileGetObject lê cadeias 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 já presentes na cadeia.
Importante
Ao ler a partir de ficheiros, não tome decisões sobre o conteúdo de um ficheiro com base na extensão do nome do ficheiro. Por exemplo, um ficheiro chamado Form1.vb pode não ser um ficheiro fonte Visual Basic.