我需要一次将很多文本写入一个文件,但是必须以一种特定的方式设置其格式,而不是全部都排成一行。

我的代码是:

  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]”并在此之后自动结束引号。

===============>>#1 票数: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

如果要使用存储在变量中的用户首选项值动态构建字符串,而不是全部硬编码,那么这样做会容易得多,并且看起来更加明智。

===============>>#2 票数:0

将所有文本(行)放在一个数组中并使用

        var arr = new[]{ "MaxHealthTicks = 50","MaxHealthMicroTicks = 100","DefaultHealthPerMicroTick = 50",
        "DefaultHealthPerTick = 200", "DefaultHealthPerMegaTick = 1000"};

        File.WriteAllLines(@"c:/temp/test.txt", arr);

它将以正确的格式在所有行中写入所有文本行。 文件中的文字

===============>>#3 票数:0

如何使用字符串生成器执行此操作的示例

Dim sb as new StringBuilder
sb.appendLine("Line1")
sb.appendLine("Line2")
File.writeAllLines(filePath, sb.toString())

这是一个好方法,因为字符串生成器对象比重复连接字符串更有效,详细信息请参见此处。

===============>>#4 票数:0

科迪·格雷非常清楚地提到了这一点,所以我不确定您如何在最后一行得到错误。

请记住,您所做的只是实际上要保存一个长字符串。 如果需要,您可以将全部内容写在一行上。

vbnewline添加一个换行符(清除),&符号准备好添加另一行,并且您看到的下划线用于允许代码*显示在多行上(可选)。

编写者的最后代码应该是。

..."[GeneralDataHero]()" & vbNewLine & _
"FadeTimerForHealthBar = 2.0" & vbNewLine & _
"ZeroHealthAlpha = 225" & vbNewLine & _
"FullHealthAlpha = 200" & vbnewline & _
"DefaultChampionCollisionRadius = 65.0")

End Using

您收到的表达式预期错误听起来像是以&符号或下划线字符结束。 如上所示,它应该以“ quotes”中的最后一个字符串值和一个右括号结束。

在开始vb.net时,我发现将所有内容一起添加到单个字符串中,然后将字符串放入编写器中更加容易。 最终浪费时间,但是可以使用string = string&value将其整理得更加清晰。

===============>>#5 票数: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()

  ask by user2288508 translate from so

未解决问题?本站智能推荐:

关注微信公众号