我需要一次将大量文本写入文件,但必须以特定方式进行格式化,而不是全部在一行中。
我的代码是:
If System.IO.File.Exists(filepath) Then
Using reader As StreamReader = New StreamReader(filepath)
sLine = reader.ReadToEnd
End Using
Using writer As StreamWriter = New StreamWriter(filepath)
writer.Write("[HealthBarSettings]
MaxHealthTicks = 50
MaxHealthMicroTicks = 100
DefaultHealthPerMicroTick = 50
DefaultHealthPerTick = 200
DefaultHealthPerMegaTick = 1000
TickAlpha = 200
MicroTickAlpha = 140
MicroTickHeight = 0.5
MegaTickAlpha = 255
TickThickness = 1.0
MicroTickThickness = 1.0
MegaTickThickness = 2.0
UseCompression = 1
GoTransparent = 1
[GeneralDataHero]()
FadeTimerForHealthBar = 2.0
ZeroHealthAlpha = 225
FullHealthAlpha = 200
DefaultChampionCollisionRadius = 65.0")
End Using
MsgBox("File Written")
Else
MsgBox("File does not exist")
End If
但这不起作用,因为它不会使用所有文本而只是使用 “[HealthBarSettings]”并在此之后自动结束报价。
答案 0 :(得分:2)
VB.NET不支持多行字符串文字。您必须手动指明换行符。
例如:
If System.IO.File.Exists(filepath) Then
Using reader As StreamReader = New StreamReader(filepath)
sLine = reader.ReadToEnd
End Using
Using writer As StreamWriter = New StreamWriter(filepath)
writer.Write("[HealthBarSettings]" & vbNewLine & _
"MaxHealthTicks = 50" & vbNewLine & _
"MaxHealthMicroTicks = 100" & vbNewLine & _
"DefaultHealthPerMicroTick = 50" & vbNewLine & _
"DefaultHealthPerTick = 200" & vbNewLine & _
"DefaultHealthPerMegaTick = 1000" & vbNewLine & _
vbNewLine & _
"TickAlpha = 200" & vbNewLine & _
"MicroTickAlpha = 140" & vbNewLine & _
"MicroTickHeight = 0.5" & vbNewLine & _
"MegaTickAlpha = 255" & vbNewLine & _
"TickThickness = 1.0" & vbNewLine & _
"MicroTickThickness = 1.0" & vbNewLine & _
"MegaTickThickness = 2.0" & vbNewLine & _
vbNewLine & _
"UseCompression = 1" & vbNewLine & _
"GoTransparent = 1" & vbNewLine & _
' etc...
End Using
MsgBox("File Written")
Else
MsgBox("File does not exist")
End If
如果您使用存储在变量中的用户首选项值动态构建字符串,而不是对其进行硬编码,那么这样做会更加容易并且看起来更加明智。
答案 1 :(得分:0)
将所有文本(行)放在一个数组中并使用
var arr = new[]{ "MaxHealthTicks = 50","MaxHealthMicroTicks = 100","DefaultHealthPerMicroTick = 50",
"DefaultHealthPerTick = 200", "DefaultHealthPerMegaTick = 1000"};
File.WriteAllLines(@"c:/temp/test.txt", arr);
它会以正确的格式在新行中写入所有文本行。
答案 2 :(得分:0)
如何使用字符串构建器
执行此操作的示例Dim sb as new StringBuilder
sb.appendLine("Line1")
sb.appendLine("Line2")
File.writeAllLines(filePath, sb.toString())
这是一种很好的方法,因为字符串构建器对象比重复连接字符串更有效,详细信息为Here
答案 3 :(得分:0)
Cody Gray非常清楚地提到了这一点,所以我不确定你是怎么设法在最后一行得到错误的。
请记住,你所做的只是制作一个长字符串来保存。如果你愿意的话,你可以将整个事情写在一行上。
vbnewline添加换行符(清除),& sign ready它会添加另一行,你看到的下划线用于允许代码*显示在多行上(可选)。
作者的最后一点代码应该是。
..."[GeneralDataHero]()" & vbNewLine & _
"FadeTimerForHealthBar = 2.0" & vbNewLine & _
"ZeroHealthAlpha = 225" & vbNewLine & _
"FullHealthAlpha = 200" & vbnewline & _
"DefaultChampionCollisionRadius = 65.0")
End Using
你得到的表达预期错误听起来像你已经以&符号或下划线字符。它应如上所示结束,最后一个字符串值在“quotes”和一个右括号中。
当开始使用vb.net时,我发现将所有内容添加到单个字符串中更容易,然后将字符串放入编写器中。最后浪费时间,但可以使用string = string& amp;值。
答案 4 :(得分:0)
类似地说,如果要将文本框中的多行文本保存到文件中,请使用以下代码:
Dim iText As New System.IO.StreamWriter("C:\Test.txt", True)
For Each iLineTxt As String In Textbox1.Lines
iText.WriteLine(iLineTxt)
Next
iText.Close()