Share via


FileSystem.FileGetObject(Int32, Object, Int64) Yöntem

Tanım

Verileri, açık bir disk dosyasından bir değişken içine okur. Bu My özellik, dosya G/Ç işlemlerinde FileGetObjectdaha iyi üretkenlik ve performans sağlar. Daha fazla bilgi için bkz. 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)

Parametreler

FileNumber
Int32

Gereklidir. Herhangi bir geçerli dosya numarası.

Value
Object

Gereklidir. Verinin içine okunduğu geçerli değişken adı.

RecordNumber
Int64

İsteğe bağlı. Okumanın başladığı kayıt numarası (Random mod dosyaları) veya bayt numarası (Binary mod dosyaları).

Örnekler

Aşağıdaki örnek, bir kaydı bir test dosyasına okur ve ardından alır.

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)

Açıklamalar

, FileGetObject , Short, vb. gibi LongIntegerbaşka bir tür yerine FileGet tür Object döndürülürse derleme zamanında belirsizliklerden kaçınmak yerine işlevi kullanılır.

Türü yazmak Variant istiyorsanız gereklidir FileGetObject . Şüpheniz varsa, ikinci parametre için bir nesne kullanıyorsanız, her zaman ve FileGetObjectkullanmanız FilePutObject önerilir.

FileGetObjectyalnızca ve Binary modunda Random geçerlidir.

ile FileGetObject okunan veriler genellikle ile FilePutObjectyazılır.

Bir dosyadaki ilk kayıt veya bayt, 1 konumunda, ikinci kayıt veya bayt, 2 konumunda ve benzeri şekildedir. atlarsanız RecordNumber, FileGetObject kaydı veya baytı son FileGetObject veya FilePutObject işlevden sonra okur (veya son Seek işlev tarafından işaret edilir).

Rastgele Modu

Modda Random açılan dosyalar için aşağıdaki kurallar geçerlidir:

  • Okunan verilerin uzunluğu işlevin yan tümcesinde RecordLength belirtilen uzunluktan FileOpen küçükse, FileGetObject kayıt uzunluğu sınırlarında sonraki kayıtları okur. Bir kaydın sonu ile sonraki kaydın başlangıcı arasındaki boşluk, dosya arabelleğinin mevcut içeriğiyle doldurulur. Doldurma verilerinin miktarı tam olarak belirlenemediğinden, kayıt uzunluğunun okunan verilerin uzunluğuyla eşleşmesi iyi bir fikirdir.

  • içinde okunan değişken bir dizeyse, varsayılan olarak FileGetObject dize uzunluğunu içeren iki baytlık tanımlayıcıyı okur ve ardından değişkene giden verileri okur. Bu nedenle, işlevin yan tümcesi tarafından RecordLength belirtilen kayıt uzunluğu, dizenin FileOpen gerçek uzunluğundan en az iki bayt büyük olmalıdır. Visual Basic 6.0 ve önceki sürümler sabit uzunlukta dizeleri destekler ve dosyaya okunduğunda uzunluk tanımlayıcısı yazılmaz. Tanımlayıcısı olmayan bir dizeyi okumak istiyorsanız parametresine StringIsFixedLength geçmeniz True ve okuduğunuz dizenin doğru uzunlukta olması gerekir.

  • içinde okunan değişken bir diziyse, işlevdeki FileOpen parametresi tarafından RecordLength belirtilen kayıt uzunluğu, dizi verilerini ve dizi tanımlayıcısını yazmak için gereken tüm baytların toplamına eşit veya ondan büyük olmalıdır. Tanımlayıcı, her bir derece için dizi derecesi, boyutu ve alt sınırı belirtir. Uzunluğu, boyut sayısının 2 artı 8 katına eşittir: 2 + 8 * NumberOfDimensions.

    Örneğin, dizi diske yazıldığında aşağıdaki dizi bildirimi 218 bayt gerektirir:

    Dim MyArray(4, 9) As Integer
    

    218 bayt aşağıdaki gibi dağıtılır: Tanımlayıcı için 18 bayt (2 + 8 * 2) ve veriler için 100 bayt (5 * 10 * 4).

  • FileGetObject öğeler arasında doldurma olmaması dışında, yapıların öğelerini her biri ayrı ayrı okunuyormuş gibi okur. Diskte, kullanıcı tanımlı bir türdeki (ile FilePutObjectyazılmış) dinamik bir dizi, uzunluğu boyut sayısının 2 artı 8 katına eşit olan bir tanımlayıcının ön ekini alır: 2 + 8 * NumberOfDimensions. İşlevdeki FileOpen yan tümcesi RecordLength tarafından belirtilen kayıt uzunluğu, diziler ve tanımlayıcıları da dahil olmak üzere tek tek öğeleri okumak için gereken tüm baytların toplamından büyük veya buna eşit olmalıdır. Sınıf, VBFixedStringAttribute diske yazıldığında dize boyutunu göstermek için yapılardaki dize alanlarına uygulanabilir.

İkili Mod

Modda BinaryRandom açılan dosyalar için tüm kurallar geçerli olur ve bu özel durumlar dışında:

  • RecordLength İşlevdeki yan tümcesinin FileOpen hiçbir etkisi yoktur. FileGetObject diskten tüm değişkenleri bitişik olarak, yani kayıtlar arasında doldurma olmadan okur.

  • Yapıdaki bir dizi dışında herhangi bir FileGetObject dizi için yalnızca verileri okur. Hiçbir tanımlayıcı okunmuyor.

FileGetObject iki baytlık uzunluk tanımlayıcısını beklemeden yapıların öğesi olmayan değişken uzunlukta dizeleri okur. Okunan bayt sayısı dizedeki karakter sayısına zaten eşittir.

Önemli

Dosyadan okurken, dosya adı uzantısına bağlı olarak dosyanın içeriği hakkında kararlar vermeyin. Örneğin, Form1.vb adlı bir dosya Visual Basic kaynak dosyası olmayabilir.

Şunlara uygulanır

Ayrıca bkz.