0

我不断地轮询文件以查看它是否已更新,即浏览器是否在文件中设置了某些 cookie。如果我没有运行应用程序,浏览器会将 cookie 的值设置到其中,但如果我正在运行应用程序,则无法写入我的文件。是否有某种方法可以读取文件以便同时写入?以下是我正在使用的代码:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a timer that polls once every 5 seconds
            var timer = new System.Threading.Timer(TimerProc, null, 5000, 5000);
            Console.WriteLine("Polling every 5 seconds.");
            Console.WriteLine("Press Enter when done:");
            Console.ReadLine();
            timer.Dispose();
        }

        static int TickCount = 0;
        static void TimerProc(object state)
        {
            ++TickCount;
            Boolean found = false;
            Console.WriteLine("tick {0}", TickCount);
            string curFile = @"C:\Users\ACP\AppData\Local\ETH Zuerich\xul_seb\Profiles\cookies.sqlite-wal";
            string line;
            Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
            //Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
            StreamReader file = new StreamReader(curFile);
            while ((line = file.ReadLine()) != null)
            {
                if (line.Contains("SEB"))
                {
                    found=true;
                }
            }
            if (found)
            {
                Console.WriteLine("String exists in the file.");
            }
            else
            {
                Console.WriteLine("String does not exist in the file.");
            }
            file.Close();
        }
    }
}
4

1 回答 1

0

FileStream在不锁定的情况下创建读取模式:

var file = new FileStream(curFile, FileMode.Open, 
                          FileAccess.Read, FileShare.ReadWrite);
于 2012-11-19T07:10:54.030 回答