Nasıl Yapılır: Visual Basic'te İkili Dosyaları Okuma

nesnesi, My.Computer.FileSystem ikili dosyalardan okumak için yöntemini sağlar ReadAllBytes .

İkili dosyadan okumak için

  • ReadAllBytes Bir dosyanın içeriğini bayt dizisi olarak döndüren yöntemini kullanın. Bu örnek dosyasından C:/Documents and Settings/selfportrait.jpgokur.

    Dim bytes = My.Computer.FileSystem.ReadAllBytes(
                  "C:/Documents and Settings/selfportrait.jpg")
    PictureBox1.Image = Image.FromStream(New IO.MemoryStream(bytes))
    
  • Büyük ikili dosyalar için, dosyadan bir kerede yalnızca belirli bir miktarı okumak için nesnesinin yöntemini FileStream kullanabilirsinizRead. Daha sonra, her okuma işlemi için dosyanın belleğe ne kadarının yüklendiğini sınırlayabilirsiniz. Aşağıdaki kod örneği bir dosyayı kopyalar ve çağıranın her okuma işlemi için dosyanın ne kadarının belleğe okunacağını belirtmesine izin verir.

    ' This method does not trap for exceptions. If an exception is 
    ' encountered opening the file to be copied or writing to the 
    ' destination location, then the exception will be thrown to 
    ' the requestor.
    Public Sub CopyBinaryFile(ByVal path As String,
                              ByVal copyPath As String,
                              ByVal bufferSize As Integer,
                              ByVal overwrite As Boolean)
    
        Dim inputFile = IO.File.Open(path, IO.FileMode.Open)
    
        If overwrite AndAlso My.Computer.FileSystem.FileExists(copyPath) Then
            My.Computer.FileSystem.DeleteFile(copyPath)
        End If
    
        ' Adjust array length for VB array declaration.
        Dim bytes = New Byte(bufferSize - 1) {}
    
        While inputFile.Read(bytes, 0, bufferSize) > 0
            My.Computer.FileSystem.WriteAllBytes(copyPath, bytes, True)
        End While
    
        inputFile.Close()
    End Sub
    

Güçlü Programlama

Aşağıdaki koşullar özel durum oluşturmasına neden olabilir:

  • Yol aşağıdaki nedenlerden biri için geçerli değildir: sıfır uzunluklu bir dizedir, yalnızca boşluk içerir, geçersiz karakterler içerir veya bir cihaz yoludur (ArgumentException).

  • Yol (ArgumentNullException olduğundan Nothing geçerli değil.

  • Dosya yok (FileNotFoundException).

  • Dosya başka bir işlem tarafından kullanılıyor veya G/Ç hatası oluşuyor (IOException).

  • Yol, sistem tarafından tanımlanan uzunluk üst sınırını (PathTooLongException) aşıyor.

  • Yoldaki bir dosya veya dizin adı iki nokta üst üste (:) veya geçersiz biçimde (NotSupportedException ) içeriyor.

  • Dizeyi arabelleğe (OutOfMemoryException) yazmak için yeterli bellek yok.

  • Kullanıcı, yolu ( ) görüntülemek için gerekli izinlere sahipSecurityException değil.

Dosya adına dayanarak dosyanın içeriği ile ilgili kararlar vermeyin. Örneğin, Form1.vb dosyası bir Visual Basic kaynak dosyası olmayabilir.

Verileri uygulamanızda kullanmadan önce tüm girişleri doğrulayın. Dosyanın içeriği beklendiği gibi olmayabilir ve dosyadan okuma yöntemleri başarısız olabilir.

Ayrıca bkz.