Back to Top

プログラムの覚書

VB.NET INIファイルを読み書きする

VBで、INIファイルの読み込み・書き込み、をする方法を説明します。

INIファイルは、単純なテキストファイルなので、テキストエディタで編集することも出来ます。

ここでは、KERNEL32.DLLを読み込み、Win32APIを使用して、INIファイルを読み書きします。

INIファイルの読み込み・書き込み

INIファイルの読み書き関数

<DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)>
Public Shared Function GetPrivateProfileString(
    ByVal lpAppName As String,
    ByVal lpKeyName As String, ByVal lpDefault As String,
    ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer,
    ByVal lpFileName As String) As Integer
End Function

<DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)>
Public Shared Function WritePrivateProfileString(
    ByVal lpApplicationName As String,
    ByVal lpKeyName As String,
    ByVal lpString As String,
    ByVal lpFileName As String) As Long
End Function

----------------------------------------------------------------------------------
'iniファイルから取得する
Public Function GetIniString(ByVal lpSection As String, ByVal lpKeyName As String, ByVal lpFileName As String) As String
    Dim strValue As System.Text.StringBuilder = New System.Text.StringBuilder(1024)

    Dim sLen = GetPrivateProfileString(lpSection, lpKeyName, "", strValue, 1024, lpFileName)
    Dim str As String = strValue.ToString()

    Return str
End Function

'iniファイルに書き込む
Public Function PutIniString(ByVal lpSection As String, lpKeyName As String, ByVal lpValue As String, ByVal lpFileName As String) As Boolean
    Dim result As Long = WritePrivateProfileString(lpSection, lpKeyName, lpValue, lpFileName)
    Return result <> 0
End Function

呼び出し側

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim FilePath As String = "C:\work\MyFile.ini"

    Dim s As String = GetIniString("Section1", "KEY1", FilePath)
    PutIniString("Section2", "KEY1", "AAAA", FilePath)
End Sub

 

VB.NET ClassをXMLファイルに読み書きする

ClassをXML形式で、ファイルに書き込むまたは、読み込む方法を記載します。

読み書きするClassの例

Public Class Parameter
    Public val1 As String
    Public val2 As Double
    Public val3 As Integer
End Class

ClassをXMLファイルに書き込む

Dim FilePath As String = "C:\work\myfile.xml"

Dim prm As Parameter = New Parameter()
prm.val1 = "AAAAAAAAAAA"
prm.val2 = 20.1
prm.val3 = 10

Using sw As IO.StreamWriter = New IO.StreamWriter(FilePath, False, System.Text.Encoding.Default)
    Dim serializer As Xml.Serialization.XmlSerializer = New Xml.Serialization.XmlSerializer(prm.GetType())
    serializer.Serialize(sw, prm)
End Using

 

XMLファイルをClassに読み込む

Dim FilePath As String = "C:\work\myfile.xml"

Dim prm As Parameter = New Parameter()
If IO.File.Exists(FilePath) Then
    Using sr As IO.StreamReader = New IO.StreamReader(FilePath, System.Text.Encoding.Default)
        Dim serializer As Xml.Serialization.XmlSerializer = New Xml.Serialization.XmlSerializer(prm.GetType())
        prm = serializer.Deserialize(sr)
    End Using
End If