尝试从文本文件中删除特定行时获取访问权限被拒绝错误

时间:2017-09-07 02:32:55

标签: vb.net

我在尝试从文本文件中删除特定行时收到错误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

1 个答案:

答案 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