You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用File.ReadLines读写文件报错:文件被占用如何解决?

问题分析与解决方法

占用进程说明

占用文件的就是你当前运行的程序本身。

原因

File.ReadLines是延迟加载的方法:它不会一次性将文件内容全部读取到内存,而是在执行For Each遍历的时候才逐行读取,并且会保持文件句柄处于打开状态直到遍历完成。你的代码在遍历开始前就用StreamWriter尝试打开同一个文件,导致当前进程内部的文件读写操作冲突,触发了IOException。

解决方法

先把需要保留的行一次性读取到内存(比如List(Of String)),此时File.ReadLines会立即关闭文件句柄,之后再操作文件就不会有冲突。同时推荐用Using语句管理StreamWriter,它会自动释放文件资源,避免手动管理的遗漏。

修改后的代码:

' 先筛选并保存需要保留的行到内存,文件读取完成后自动关闭
Dim keepLines As New List(Of String)()
For Each line In File.ReadLines(Path & "X.ini")
    If condition_iskeepIt Then
        keepLines.Add(line)
    End If
Next

' 安全打开文件写入内容
Using paramFile As New StreamWriter(Path & "X.ini", append:=False)
    ' 写入保留的行
    For Each line In keepLines
        paramFile.WriteLine(line)
    Next
    ' 写入新内容
    ' ...write revised lines
End Using

内容的提问来源于stack exchange,提问作者Ernesto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:21:02