我在尝试从文本文件中删除特定行时收到错误System.UnauthorizedAccessException: 'Access to the path '\File.txt' is denied.'
,代码如下。我是VB编程的新手,正在搜索谷歌删除特定行的方法,并找到了几个代码片段,但大多数都给出了同样的错误。
我认为这是因为ReadAllLines
正在使用该文件而StreamWriter
正在尝试修改文件内容。任何人都可以建议一个更好的方式来完成这项工作。
#
Public Sub DeleteLineFromFile(ByVal Path As String, ByVal LineNumber As Integer)
Dim lines() As String = IO.File.ReadAllLines(Path)
Dim Count As Integer = 0
Count = lines.Length
If LineNumber <= Count Then
lines.SetValue("", LineNumber - 1)
Using sw As New IO.StreamWriter(Path)
For Each Line As String In lines
If Line <> "" Then
sw.WriteLine(Line)
End If
Next
End Using
End If
lines = Nothing
Count = Nothing
End Sub
答案 0 :(得分:1)
我尝试了另一种方法并且在编写文件之前使用了删除文件的想法,它看起来很有效。然而,任何好的建议都会受到高度赞赏,因为我是VB的新手。
Sub RemoveAtLine(ByVal filePath As String, Optional ByVal lineRemove As Integer = -1)
Dim lines As New List(Of String)(File.ReadAllLines(filePath))
If (lineRemove >= 0 And lineRemove < lines.Count) Then
lines.RemoveAt(lineRemove)
File.Delete(filePath)
End If
File.WriteAllLines(filePath, lines.ToArray())
End Sub