VB.NET如何将文本写入.ini文件?

时间:2015-05-28 20:41:02

标签: vb.net

我正在创建一个程序,帮助用户为另一个程序创建一个通常必须手动完成的配置文件。 程序配置文件读起来像; 'This_Setting = 0/1(关/开)'

所以我想这样做,以便如果用户勾选我的程序上的复选框,它将在文本文件'1'中写入,如果未勾选,它将写为'0'。

我想到的另一种方法是使用文本框,用户勾选他们想要的方框,然后单击按钮然后将配置代码粘贴到文本框中,以便他们可以复制/粘贴它。我个人认为这是一个更好的选择,但我仍然没有丝毫的线索如何去做。

感谢任何帮助!

5 个答案:

答案 0 :(得分:2)

如果您只需要创建文件,那么File.WriteAllText可能就是您所需要的。如果它是一个大文件,您可以使用StringBuilder类来构建文件的内容,或者如果它是一个小文件,您可以使用简单的字符串连接。获得字符串后,可以使用File.WriteAllText将其写入磁盘。

答案 1 :(得分:2)

传统方式是使用GetPrivateProfileString(或GetPrivateProfileSection)来检索INI设置,使用WritePrivateProfileString(或WritePrivateProfileSection)来更改它们。

您可以在PInvoke

找到语法

答案 2 :(得分:1)

这应该很容易。您想要做的是使用以下代码。

FileOpen(1, "WHATEVER-THE-FILE-PATH-IS.ini", OpenMode.Output)
PrintLine(1, "WHATEVER-TEXT-YOU-WANT-TO-WRITE")
FileClose(1)

您所要做的就是改变一些东西以满足您的需求。首先,在FileOpen()上你要改变它所说的位置" WHATEVER-THE-FILE-PATH-IS.ini"到您的文件路径(确保最后有.ini。)

接下来要做的就是改变它所说的OpenMode.Output。您使用OpenMode.Output 写入文本文件,当您想要从文本文件中读取时使用OpenMode.Input(您可以在您加载应用程序)并使用OpenMode.Append添加文本。

现在有一些事情你需要注意:

  1. 当您使用OpenMode.Output时,它实际上先清除文本文件中的所有文本,然后写下您要写的文本。

  2. 当您使用OpenMode.Input时,您无法使用PrintLine(1, "WHATEVER"),因为写入文本文件时无法读取 - 因此它只会崩溃。从文本文件中使用OpenMode.Input 读取时,您必须使用LineInput(1)

    例如:

    Dim bool As Boolean FileOpen(1, "WHATEVER", OpenMode.Input) If LineInput(1) = "1" Then bool = True Else bool = False FileClose(1)

    此代码将读取.ini文件,如果它在其中显示1,则它将值设置为True,如果它在其中为0,则它​​将值设置为False

  3. 所以这是代码,毕竟经历了所有这些!

    加载值:

    Dim bool As Boolean
    FileOpen(1, "WHATEVER.ini", OpenMode.Input)
    If LineInput(1) = "1" Then bool = True Else bool = False
    FileClose(1)
    

    保存值:

    Dim bool As Boolean
    FileOpen(1, "WHATEVER.ini", OpenMode.Input)
    If bool = True Then PrintLine(1, "1") Else PrintLine(1, "0")
    FileClose(1)
    

    (不要忘记您可以根据需要添加PrintLine(1, "")LineInput(1)

答案 3 :(得分:1)

这是要写入INI文件的VB.NET代码,

Imports System.IO
Imports System.Text
Imports System.Runtime.InteropServices

Public Class Form1
    <DllImport("kernel32")>
    Private Shared Function WritePrivateProfileString(ByVal lpSectionName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
    End Function

    Private Function SetIniValue(section As String, key As String, filename As String, Optional defaultValue As String = "") As String
        Dim sb As New StringBuilder(500)
        If WritePrivateProfileString(section, key, defaultValue, filename) > 0 Then
            Return sb.ToString
        Else
            Return defaultValue
        End If
    End Function

    Private Sub WriteToINI()
        SetIniValue("default", "This_Setting", "C:\myconfigfile.ini", "1")
    End Sub
End Class

参考:http://vbnet.mvps.org/index.html?code/file/pprofilebasic.htm

答案 4 :(得分:0)

用于轻松读取和写入 .INI 文件的类。 这些不是我做的。 说明

  1. 将此代码放入您的项目中。 VB 代码:
    Class INIReadWrite
 
    <DllImport("kernel32.dll", SetLastError:=True)> _
    Private Shared Function GetPrivateProfileString(ByVal lpAppName As >String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal >lpReturnedString As StringBuilder, ByVal nSize As Integer, ByVal lpFileName >As String) As Integer
    End Function
 
    <DllImport("kernel32.dll", SetLastError:=True)> _
    Private Shared Function WritePrivateProfileString(ByVal lpAppName As >String, ByVal lpKeyName As String, ByVal lpString As String, ByVal >lpFileName As String) As Boolean
    End Function

 
    Public Shared Function ReadINI(ByVal File As String, ByVal Section As >String, ByVal Key As String) As String
        Dim sb As New StringBuilder(500)
        GetPrivateProfileString(Section, Key, "", sb, sb.Capacity, File)
        Return sb.ToString
   End Function

    Public Shared Sub WriteINI(ByVal File As String, ByVal Section As >String, ByVal Key As String, ByVal Value As String)
        WritePrivateProfileString(Section, Key, Value, File)
    End Sub

End Class
  1. 读取 .INI 文件 代码:
ReadINI(File, Section, Key)
  1. 写入 .INI 文件 代码:
WriteINI(File, Section, Key, Value)