Aracılığıyla paylaş


Nasıl yapılır: Visual Basic'te İkili Dosyalardan Okuma

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

İkili bir dosyayı okumak için

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

    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 amacıyla Read nesnesinin FileStream yöntemini kullanabilirsiniz. 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
    

Sağlam Programlama

Aşağıdaki koşullar bir istisna 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 geçerli değil çünkü Nothing (ArgumentNullException).

  • 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 (:) içeriyor ya da geçersiz bir biçimde (NotSupportedException) olabilir.

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

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

Dosyanın adı yerine dosyanın içeriğine göre kararlar almayın. Örneğin, Form1.vb dosyası bir Visual Basic kaynak dosyası olmayabilir.

Uygulamanızda verileri 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 bakınız