FileSystem.FileGetObject(Int32, Object, Int64) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
RecordLengthbelirtilen uzunluktanFileOpenküçükse,FileGetObjectkayı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
FileGetObjectdize 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ındanRecordLengthbelirtilen kayıt uzunluğu, dizeninFileOpengerç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 parametresineTruegeçmenizStringIsFixedLengthve okuduğunuz dizenin doğru uzunlukta olması gerekir.içinde okunan değişken bir diziyse, işlevdeki
RecordLengthparametresi tarafındanFileOpenbelirtilen 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 Integer218 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).
FileGetObjecther 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 (ileFilePutObjectyazı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. İşlevdekiRecordLengthyan tümcesiFileOpentarafı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ümcesininFileOpenhiçbir etkisi yoktur.FileGetObjectdiskten tüm değişkenleri bitişik olarak, yani kayıtlar arasında doldurma olmadan okur.Bir yapıdaki
FileGetObjectdizi 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.
- FilePut
- FileOpen(Int32, String, OpenMode, OpenAccess, OpenShare, Int32)
- Seek
- FileGet
- Visual BasicReading>
Visual Basic