我觉得这确实很简单,但是我尝试过,我不知道我尝试过vbNewLine
,Environment.NewLine
,sMessage & vbNewLine (or Environment.Newline)
的排列方式,还是我查看了这个网站上的多少个页面,或者通过Google查看了多少页面,但没有任何效果。
我什至尝试从属于我的VB.Net不和谐频道获得帮助,他们建议做与我相同的事情,并且该过程仍在上一个结尾处写入每个新的日志条目。一个连续的字符串。我的作家在下面。我想念一些简单的东西吗?
编辑:如果其他任何人遇到相同的问题,下面的代码将起作用。如果您想查看原始代码,则在编辑日志中。
Option Explicit On
Imports System.IO
Public Class WriteroLog
Public Shared Sub LogPrint(sMessage As String)
Dim AppPath As String = My.Application.Info.DirectoryPath
If File.Exists($"{AppPath}\Log.txt") = True Then
Try
Using objWriter As StreamWriter = File.AppendText($"{AppPath}\Log.Txt")
objWriter.WriteLine($"{Format(Now, "dd-MMM-yyyy HH:mm:ss")} – {sMessage}")
objWriter.Close()
End Using
Catch ex As Exception
MsgBox(ex)
Return
End Try
Else
Try
Using objWriter As StreamWriter = File.CreateText($"{AppPath}\Log.Txt")
objWriter.WriteLine($"{Format(Now, "dd-MMM-yyyy HH:mm:ss")} – {sMessage}")
objWriter.Close()
End Using
Catch ex As Exception
MsgBox(ex)
Return
End Try
End If
End Sub
End Class
答案 0 :(得分:2)
File.AppendText()方法创建一个新的StreamWriter,然后将其用于将Text追加到指定的File。
请注意,在阅读有关此方法的文档时,您不需要验证文件是否已存在:如果不存在,则会自动创建文件。
作为旁注,在创建路径时,使用Path.Combine方法是一件好事:它可以防止路径定义中的错误并处理特定于平台的格式。
您的代码可以简化如下:
Public Shared Sub LogPrint(sMessage As String)
Dim filePath As String = Path.Combine(Application.StartupPath, "Log.Txt")
Try
Using writer As StreamWriter = File.AppendText(filePath)
writer.WriteLine($"{Date.Now.ToString("dd-MMM-yyyy HH:mm:ss")} – {sMessage}")
End Using
Catch ex As IOException
MsgBox(ex)
End Try
End Sub
答案 1 :(得分:1)
File.CreateText不会将结果分配给“ objWrite”,应该是:
objWriter = File.CreateText($"{AppPath}\Log.Txt")
不太确定这是否是问题的根源,但这是一个问题。
答案 2 :(得分:0)
本质上,您的逻辑是为此方法的每次调用重新打开或创建流“ objWriter”。我建议您将“ objWriter”初始化为Nothing,然后仅定义是否为Nothing。
设置为“无”,如下所示。
Shared objWriter As IO.StreamWriter = Nothing
然后添加“逻辑上无”的检查。