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

C#使用StreamReader读取文件时遇“文件被其他进程占用”错误求助

解决文件被占用导致StreamReader读取不完整的问题

哥们,我之前也踩过一模一样的坑!你碰到的The process cannot access the file because it is being used by another process错误,本质就是文件句柄没正确释放,或者真的有其他进程在占用你的文本文件,导致StreamReader没法完整读取62条记录,只成功插入了58条。下面给你几个针对性的解决方案:

1. 先排查外部进程占用

首先确认这个文本文件是不是被其他程序“霸占”了——比如你是不是用记事本、Excel或者其他编辑器打开着没关?或者有没有后台服务、其他脚本在偷偷读写这个文件?

  • Windows下可以打开资源监视器,在“关联的句柄”里搜索文件名,找到占用的进程并关闭;
  • Linux/macOS可以用lsof 文件名命令查看占用进程。

2. 用using语句确保资源自动释放

大概率是你的代码没有正确关闭StreamReader,导致文件句柄一直被占用,后续读取就报错了。C#里的using语句会自动帮你释放IDisposable资源,不管有没有异常都能保证流被关闭。

结合你给出的代码片段,修正后的示例如下:

if (postedFile.ContentLength > 0)
{
    // 用using包裹StreamReader,自动释放文件资源
    using (StreamReader reader = new StreamReader(postedFile.InputStream))
    {
        string line;
        int totalRecords = 0;
        while ((line = reader.ReadLine()) != null)
        {
            totalRecords++;
            try
            {
                // 这里写你的插入记录逻辑
                InsertRecord(line);
            }
            catch (IOException ex)
            {
                // 记录错误日志,方便定位哪条记录失败
                Console.WriteLine($"第{totalRecords}条记录插入失败: {ex.Message}");
                // 可以加个简单的重试逻辑,避免直接丢数据
                for (int retry = 0; retry < 2; retry++)
                {
                    try
                    {
                        InsertRecord(line);
                        break;
                    }
                    catch
                    {
                        // 重试失败就跳过或继续记录日志
                    }
                }
            }
        }
    }
}

3. 指定文件共享模式(如果是并发场景)

如果你的程序是多线程或者多进程同时访问这个文件,打开StreamReader的时候要指定FileShare参数,允许其他进程读取:

using (StreamReader reader = new StreamReader(
    new FileStream("你的文件路径", FileMode.Open, FileAccess.Read, FileShare.Read)))
{
    // 读取逻辑
}

这样即使其他进程在读取这个文件,你的程序也能正常访问。

4. 检查插入逻辑是否“自占用”文件

另外还要确认你的InsertRecord方法里有没有不小心再次打开这个文件却没释放?比如插入时需要读取文件的其他内容,却没关闭流,也会导致文件被自己的进程占用。

按照上面的方法排查,应该就能解决只读取58条的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:24:00