使用 VB.Net 2 读取和写入文本文件中的特定行
Posted
技术标签:
【中文标题】使用 VB.Net 2 读取和写入文本文件中的特定行【英文标题】:Read and Write to specific line in textfile with VB.Net 2 【发布时间】:2020-02-06 15:31:13 【问题描述】:我曾尝试使用解决方案(如下所示)解决 4 年前提出的“使用 VB.Net 读取和写入文本文件中的特定行”问题
Dim filePath As String = "E:\myFile.txt"
Dim lines() As String = System.IO.File.ReadAllLines(filePath)
If lines.Length > 4 AndAlso lines(4).StartsWith("ORIGIN ") Then
lines(4) = "ORIGIN ""250"""
System.IO.File.WriteAllLines(filePath, lines)
End If
但是每次遇到如下错误:
进程无法访问文件“file_path”,因为它正在 被另一个进程使用。
知道为什么会这样吗?
【问题讨论】:
你被其他应用打开了? :) "System.IO.File.WriteAllLines(filePath, lines)" 这是给出错误的行。提前谢谢你:)) 我没有。但是,我正在使用 StreamReader 对象读取同一个文件,以存储找到该字符串的行数。例如如果在第二行找到 ORIGIN "250",那么我将 2 存储在一个整数变量中;比如说 i。我以以下方式使用它-lines(i-1) = "ORIGIN""250"""。在使用上述代码之前,我什至使用了 StreamReader 对象的 .dispose 和 .close 但这没有帮助。 您可以使用 Process Explorer 或类似的工具来查找文件是否被某个进程打开。 用Using statement 声明StreamReader
。请参阅那里的示例。
【参考方案1】:
您的代码对我来说没问题。 System.IO.File.ReadAllLines()
应该在之后关闭文件。
也许有别的东西阻止了对文件的写访问。 (您正在使用某些应用程序来查看它是否正常工作?!)要检查它,请替换
Dim lines() As String = System.IO.File.ReadAllLines(filePath)
与
Dim lines() As String = "0","1","2","3","ORIGIN 4", "5"
看看它是否仍然失败。
【讨论】:
以上是关于使用 VB.Net 2 读取和写入文本文件中的特定行的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015 中的 VB.Net -“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”
如何按 MS Access 的特定月份汇总特定列数据并进入 vb.net 中的文本框
vb.net 2.0 如何用Configuration.ConfigurationSettings.AppSettings读取配置文件中的内容?