Filestream merupakan kelas yang menyediakan fungsi untuk melakukan akses stream (aliran byte) data pada sebuah file. Kelas ini disediakan olen .Net Framework mulai dari versi 1.1 keatas. Pada artikel ini, akan dibahas bagaimana membaca data dari sebuah file dan menampilkan data dari file tersebut pada aplikasi menggunakan visual basic.
Pertama sekali buatlah sebuah project baru dan tambahkan beberapa control berikut :
- 1 RichTextBox, dengan nama RichTextBox1.
- 2 Button, dengan nama Button1 dan Button2.
- 1 OpenFileDialog, dengan nama OpenFileDialog1.
Control | Properties |
RichTextBox1 | - |
Button1 | Text = "Open" |
Button2 | Text = "Clear" |
OpenFileDialog1 | - |
Adapun tampilan dari rancangan pada ide anda dapat dilihat pada gambar berikut :
Berikutnya kita akan membahas kode program untuk dapat membuka dan membaca file. Tahap pertama adalah membuat kode untuk Button1 pada saat di-klik :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim FileReader As IO.FileStream
Dim DlgResult As DialogResult
Dim BufferByte() As Byte
OpenFileDialog1.FileName = String.Empty
DlgResult = OpenFileDialog1.ShowDialog()
If DlgResult = DialogResult.OK And OpenFileDialog1.CheckFileExists Then
FileReader = New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
ReDim BufferByte(FileReader.Length - 1)
FileReader.Read(BufferByte, 0, FileReader.Length)
FileReader.Close()
RichTextBox1.Text = System.Text.ASCIIEncoding.UTF8.GetString(BufferByte)
End If
End Sub
Variabel FileReader yang merupakan kelas dari FileStream disediakan untuk menangani proses pembacaan stream data pada file yang dibuka. Variabel DlgResult digunakan untuk menampung hasil dialog dari pemilihan file yang akan dibuka. BufferByte digunakan untuk menampung data byte yang terbaca dari file.
Pada tahap awal kita akan menampilkan dialog untuk membuka file dengan perintah :
DlgResult = OpenFileDialog1.ShowDialog()
Hasil dialog akan disimpan di dalam variabel DlgResult, apakah hasil dialog adalah Ok atau Cancel (batal). Pemeriksaan hasil dialog kemudian akan dilakukan menggunakan perintah kondisi if sekaligus memeriksa apakah file yang dipilih oleh pengguna eksis atau tidak.
If DlgResult = DialogResult.OK And OpenFileDialog1.CheckFileExists Then
....................
....................
End if
Jika kondisi memenuhi (dialog = Ok, File = eksis), maka berikutnya kita akan membuat instance FileStream baru pada variabel FileReader dengan informasi lokasi file dan mode pembukaan file.
FileReader = New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
Dikarenakan pada artikel ini kita hanya ingin membaca file, maka mode yang digunakan adalah mode Open. Lokasi file dapat diperoleh dari OpenFileDialog1.Filename (hasil dari pemilihan file dari dialog open file). Tahapan berikutnya adalah menyiapkan penampung (buffer) untuk dapat menampung byte data dari file.
ReDim BufferByte(FileReader.Length - 1)
Variabel BufferByte yang kita sediakan untuk penampung byte data akan kita re-inisialisasi ukurannya berdasarkan panjang byte dari data. Setelah variabel penampung disiapkan, selanjutnya kita akan membaca byte data dari file dan mengisi byte-byte tersebut kedalam variabel BufferByte.
FileReader.Read(BufferByte, 0, FileReader.Length)
Pada kode diatas dapat dilihat Objek FileReader melakukan proses membaca byte data yang kemudian byte data akan dikirimkan ke variabel BufferByte. Pembacaan byte data dimulai dari indeks 0 (awal file) dan jumlah byte yang dibaca adalah sebanyak byte yang tersedia pada file (FileReader.Length). Setelah proses pembacaan byte selesai, selanjutnya kita dapat menampilkan hasil pembacaan byte ke control RichTextBox.
RichTextBox1.Text = System.Text.ASCIIEncoding.UTF8.GetString(BufferByte)
Dikarenakan data yang akan ditampilkan ke dalam richtextbox adalah deretan byte, maka diperlukan proses transformasi menjadi karakter teks menggunakan ASCIIEncoding. Kelas encoding dapat menggunakan kelas lainnya seperti UnicodeEncoding, UTFEncoding, dan lain sebagainya.
Adapun hasil dapat dilihat pada gambar berikut :
Button2 (Clear) digunakan untuk membersihkan atau mengosongkan kembali control RichTextBox menggunakan kode perintah berikut :
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
RichTextBox1.Text = ""
End Sub
Source code untuk artikel ini dapat anda unduh pada link berikut :