【问题标题】:One program writes to file while other program reads same file c#一个程序写入文件,而另一个程序读取同一文件c#
【发布时间】:2013-09-22 02:42:43
【问题描述】:

1) 我创建了一个程序,它打开了一个 twitter 流并将所有内容写入一个文件。

    FileStream fs = new FileStream(@"\Database\twitterstream.txt", FileMode.Create);        
    TextWriter tmp = Console.Out;
    StreamWriter sw = new StreamWriter(fs);
    Console.SetOut(sw);

2) 我有另一个程序要读取所述文本文件。

    using (StreamReader sr = File.OpenText("C:\\Database\\twitterstream.txt"))
        {
            input = sr.ReadLine();
        }

因为我希望它是实时的,所以我试图让一个程序写入,同时另一个程序读取,但显然它正在抛出

"进程无法访问文件 'C:\Database\twitterstream.txt' 因为它正在被另一个人使用 过程”回到我身边。

我正在尝试做的事情可能吗?如果是这样,我该怎么做?

【问题讨论】:

    标签: c# file


    【解决方案1】:

    为您的 FileStream 构造函数添加几个参数:

    FileStream fs = new FileStream(
        @"\Database\twitterstream.txt",
        FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
    

    请参阅 MSDN 上的 FileStream

    【讨论】:

    • 我试过这个,但是当我这样做时它完全停止写入文件
    • @Kate - 听起来您的代码可能有一些错误需要解决。我无权访问源代码(在这里发布的内容可能太多了),但我会检查两件事:确保您的所有文件句柄都允许共享(File.OpenText 默认情况下可能会锁定文件)和确保您正在关闭您的流。完成写入操作后,您还必须flush your stream buffer,以确保您写入流的文本实际上已写入文件。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    相关资源
    最近更新 更多