Membaca dan menulis file .INI dalam ASP.NET

ASP.NET merupakan platform dari Microsoft yang digunakan untuk mengembangkan aplikasi web (Web Application). Dengan rilis terbaru .NET Framework 2.0, Microsoft telah menambahkan fitur baru seperti Master Pages dan Automatic Site Navigation yang menjadikan ASP.NET sebagai salah satu tool pengembang web site yang powerful.

Kita mungkin ingin menyimpan pengaturan dan informasi konfigurasi suatu aplikasi ASP.NET yang bisa diakses secara cepat dan kapan saja. Alternatif lain selain menyimpan dalam database, proses penyimpanan juga bisa dilakukan ke dalam suatu file yang berakhiran .INI.


Dalam artikel ini saya tidak akan menjelaskan kelebihan dan kekurangan proses penyimpanan menggunakan file INI.
Disini saya akan mencoba menjelaskan bagaimana cara menulis dan membaca file INI menggunakan ASP.NET dengan Code Behind Visual Basic.NET. Class yang akan dibuat adalah Class INI yang memiliki fungsi baca serta fungsi tulis.

Proses baca menggunakan Class StreamReader yang membaca karakter dari suatu file INI. Proses baca akan dimulai dari baris pertama sampai baris terakhir, jika string yang diinginkan terdapat dalam suatu baris, maka string tersebut akan disampaikan kepada user.

Contoh penggunaan fungsi baca :


Dim cBaca As New ini
Dim strCari as String = cBaca.baca(NamaFileIni.ini, KataKunci)



Proses tulis menggunakan Class StreamWriter yang akan membaca konfigurasi dalam file INI setiap baris. Proses tulis dimulai dengan membaca isi setiap baris dalam file INI, mencari string yang telah ditentukan, jika ditemukan, maka string konfigurasi tersebut akan diupdate. Jika tidak ditemukan, maka buat string konfigurasi yang baru.
Contoh penggunaan fungsi tulis:


Dim cBaca As New ini
Dim strCari As String = cBaca.tulis(NamaFileIni.ini, StringKonfigurasi, NilaiStringKonfigurasi)


Source Code lengkap dari Class INI bisa dilihat pada listing di bawah ini:


'Source Code for Read and Write INI Files in ASP.NET

Imports Microsoft.VisualBasic
Imports System.IO

Public Class ini
Public Shared Function baca(ByVal iniFile As String, ByVal kunciPencarian As String)

Dim lenSS As Integer = Len(kunciPencarian)
Dim locQ As Integer
Dim strBaru As String

Using sr As StreamReader = _
New StreamReader(HttpContext.Current.Server.MapPath(iniFile))
Dim baris As String
' loop sampai akhir file
Do
baris = sr.ReadLine()
' cek setiap baris
If Left(baris, lenSS) = kunciPencarian Then
' ditemukan, sekarang keluarkan nilainya
' cari tanda petik dua pertama
locQ = InStr(baris, """")

' buat nilai yang telah diperoleh
strBaru = Mid(baris, (locQ + 1), ((Len(baris) - locQ) - 1))

' ambil dan berikan nilainya
Return strBaru
baris = Nothing
End If
Loop Until baris Is Nothing
sr.Close()
End Using
Return "error"
End Function

Public Shared Function tulis(ByVal fileINI As String, _
ByVal kunciTulis As String, ByVal nilaiTulis As String)

' file temp #1
Dim iniFileTemp As String = "/tempsetting_del.ini"

' file temp #2
Dim iniTempOrigFile As String = "/tempsettingori_del.ini"

' panjang string pencarian
Dim lenSS As Integer = Len(kunciTulis)

' eof? t/f
Dim boolEof As Boolean

' string untuk mencari pada eof
Dim strEof As String = "[eof]"

' server.mappath ke semua file yang digunakan
Dim iniMappedFile As String = _
HttpContext.Current.Server.MapPath(fileINI)
Dim iniMappedTempFile As String = _
HttpContext.Current.Server.MapPath(iniFileTemp)
Dim iniMappedTempOrigFile As String = _
HttpContext.Current.Server.MapPath(iniTempOrigFile)

Dim sw As StreamWriter = New StreamWriter(iniMappedTempFile)

' sekilas:
' 1. baca setiap file dari file INI
' 2. cari yang sesuai, jika tidak sesuai, tulis ke file temp
' 3. jika tidak sesuai, tulis nilai baru
' 4. tulis baris selanjutnya

' nilai baru yang akan ditulis
Dim strNewValue = kunciTulis & " = """ & nilaiTulis & """"

Using sr As StreamReader = New StreamReader(iniMappedFile)
Dim line As String
' loop sampai akhir file
Do
line = sr.ReadLine()
' pertama2 cek apakah eof=true, sehingga kita tidak menulis baris kosong
If Left(line, 5) = strEof Then boolEof = True

' cek setiap baris yang sesuai
If Left(line, lenSS) = kunciTulis Then
' ditemukan, menulis nilai baru ke file temp
sw.WriteLine(strNewValue)
Else
' apakah kita berada di akhir file?
If boolEof = True Then
sw.WriteLine(strEof)
' keluar dari loop
Exit Do
End If
' tidak ditemukan, tulis baris ke file temp
sw.WriteLine(line)
End If
Loop Until line Is Nothing
sr.Close()
End Using
sw.Close()

' 1 / 3. pindahkan file ori ke file temp jika proses kedua gagal
File.Move(iniMappedFile, iniMappedTempOrigFile)

' 2 / 3. pindahkan file temp ke file ori
File.Move(iniMappedTempFile, iniMappedFile)

' 3 / 3. hapus yang di-rename, sekarang temp-kan file orig
File.Delete(iniMappedTempOrigFile)

' selesai
Return ""
End Function
End Class




Related Posts by Categories



Widget by Hoctro

Enter your email address:

Delivered by FeedBurner

Followers



Source Code

Tips