使用 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 读取和写入文本文件中的特定行的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET - 正则表达式来搜索特定格式的标签

VB.Net根据下拉文本选择隐藏特定的gridview列

Visual Studio 2015 中的 VB.Net -“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”

如何按 MS Access 的特定月份汇总特定列数据并进入 vb.net 中的文本框

vb.net 2.0 如何用Configuration.ConfigurationSettings.AppSettings读取配置文件中的内容?

从 vb.net 中的访问中计算特定记录