我正在创建一个程序,帮助用户为另一个程序创建一个通常必须手动完成的配置文件。 程序配置文件读起来像; 'This_Setting = 0/1(关/开)'
所以我想这样做,以便如果用户勾选我的程序上的复选框,它将在文本文件'1'中写入,如果未勾选,它将写为'0'。
我想到的另一种方法是使用文本框,用户勾选他们想要的方框,然后单击按钮然后将配置代码粘贴到文本框中,以便他们可以复制/粘贴它。我个人认为这是一个更好的选择,但我仍然没有丝毫的线索如何去做。
感谢任何帮助!
答案 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
添加文本。
现在有一些事情你需要注意:
当您使用OpenMode.Output
时,它实际上先清除文本文件中的所有文本,然后写下您要写的文本。
当您使用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
!
所以这是代码,毕竟经历了所有这些!
加载值:
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 文件的类。 这些不是我做的。 说明
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
ReadINI(File, Section, Key)
WriteINI(File, Section, Key, Value)