重写文本文件

ReWrite text file

如何重写文本文件(在指定位置)并锁定他?

rewrite需要先读后写。 - 这很容易 - 但我需要在整个重写过程中将 make 文件锁定到所有其他进程。

我有方法

    public bool AccessBridge()
    {
        try
        {
            fs = new FileStream("bridge.ini", FileMode.Open, FileAccess.ReadWrite);
            sr = new StreamReader(fs);
            sw = new StreamWriter(fs);
            return true;
        }
        catch (IOException ioe)
        {
            return false;
        }
    }

然后是另一个测试部分:

        string precteno = sr.ReadToEnd();
        //Some modify string
        //now I need delete whole text from file
        sw.Write(precteno);

有什么想法吗?我已经在第 2 晚处理了。

只需使用FileShare.None独占打开即可:

fs = new FileStream("bridge.ini", FileMode.Open, FileAccess.ReadWrite, FileShare.None);

顺便说一句...如果我是你,我会将那部分包装在 using:

using (var fs = new FileStream("bridge.ini", FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
}

这样,流就被正确处理了。目前,我在你的代码中没有看到你关闭流的任何地方(也许你在其他地方这样做,因为你已经在该方法之外声明了你的流......但是是的)。

试试这个:

public bool AccessBridge()
{
    try
    {
        fs = new FileStream("bridge.ini", FileMode.Open, FileAccess.ReadWrite); 
        sr = new StreamReader(fs);
        string text = sr.ReadToEnd();
        //do text modifications
        //... 
        sw = new StreamWriter(fs, false);
        sw. Write(text) ;
        return true;

    }
    catch (IOException ioe)
    {
        return false;
    }
}

想到自己的Stream后,反汇编FileStream发现getter/setter位置

解决方案:

    string precteno = sr.ReadToEnd();
    precteno = stringModificator(precteno);
    fs.Position = 3;
    sw.Write(precteno);