2017-09-07 14 views
1

テキストファイルから特定の行を削除しようとするとエラーSystem.UnauthorizedAccessException: 'Access to the path '\File.txt' is denied.'が発生します。私はVBプログラミングでは非常に新しく、特定の行を削除する方法をGoogleで検索していて、いくつかのコードスニペットを見つけましたが、ほとんどが同じエラーを出しています。アクセスが拒否されました。テキストファイルから特定の行を削除しようとしたときにエラーが発生しました。

StreamWriterがファイルの内容を変更しようとしているうちに、ReadAllLinesがファイルを使用しているためです。誰でも仕事を遂行するためのよりよい方法を提案できますか?

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

私は別の方法を試してみましたが、正しいファイルを書き込む前に、ファイルを削除する考えを使用し、それが働いているようです。しかし、私は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 
関連する問題