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

Tanım

Açık bir disk dosyasındaki verileri bir değişkene okur. Bu My özellik, dosya G/Ç işlemlerinde FileGetObjectdaha iyi üretkenlik ve performans sağlar. Daha fazla bilgi için bkz. FileSystem.

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The target object type could not be statically analyzed and may be trimmed")]
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The target object type could not be statically analyzed and may be trimmed")>]
static member FileGetObject : int * obj * int64 -> unit
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

Gerekli. Geçerli herhangi bir dosya numarası.

Value
Object

Gerekli. Verilerin okunduğu geçerli değişken adı.

RecordNumber
Int64

Optional. Okumanın başladığı kayıt numarası (Random mod dosyaları) veya bayt numarası (Binary mod dosyaları).

Öznitelikler

Ö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 , FileGetve gibi başka bir tür ObjectIntegeryerine Long tür Short döndürülürse derleme zamanında belirsizliği önlemek için 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 FilePutObjectkullanmanız FileGetObject önerilir.

FileGetObjectyalnızca ve Random modunda Binary 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 konumundadır, vb. atlarsanız RecordNumber, FileGetObject kaydı veya baytı son FileGetObject veya FilePutObject işlevden sonra okur (veya son Seek işleve işaret eder).

Rastgele Mod

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ı kesin 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 bir 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 True geçmeniz StringIsFixedLength ve okuduğunuz dizenin doğru uzunlukta olması gerekir.

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

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

    Dim MyArray(4, 9) As Integer
    

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

  • FileGetObject her biri ayrı ayrı okunuyormuş gibi yapıların öğelerini okur, ancak öğeler arasında doldurma yoktur. Diskte, kullanıcı tanımlı bir türdeki dinamik dizi (ile FilePutObjectyazılır), uzunluğu boyut sayısının 2 artı 8 katına eşit olan bir tanımlayıcı tarafından öneklenir: 2 + 8 * NumberOfDimensions. İşlevdeki RecordLength yan tümcesi FileOpen tarafından belirtilen kayıt uzunluğu, diziler ve tanımlayıcıları 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 Binary açılan dosyalar için tüm Random kurallar uygulanır 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.

  • Bir yapıdaki FileGetObject dizi dışındaki herhangi bir dizi için yalnızca verileri okur. Hiçbir tanımlayıcı okunmaz.

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ı, dizede bulunan karakter sayısına eşittir.

Important

Dosyalardan okurken, dosya adı uzantısına göre dosyanın içeriği hakkında karar verme. Örneğin, Form1.vb adlı bir dosya Visual Basic kaynak dosyası olmayabilir.

Şunlara uygulanır

Ayrıca bkz.