pourquoi dans fs2 objet jeter erreur ?? j'ai déjà écrit un FileShare.ReadWrite dans un objet fs

     FileStream fs = new FileStream("hello.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite);

        mama();

        Console.ReadKey();

    }
    static void mama()
    {
        FileStream fs2 = new FileStream("hello.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
        fs2.Read(new byte[3], 0, 3);
    }

quelqu'un peut-il me dire pourquoi cette erreur?

error = Le processus ne peut pas accéder au fichier 'C: \ Users \ iP \ documents \ visual studio 2015 \ Projects \ ConsoleApplication32 \ ConsoleApplication32 \ bin \ Debug \ hello.txt' car il est utilisé par un autre processus.

0
Salo7ty 4 nov. 2019 à 08:04

1 réponse

Parce que votre code ne ferme jamais le fichier et a un descripteur ouvert

Si vous le pouvez, utilisez toujours l'instruction using, ce sera flush et close le fichier

using(var fs = new FileStream(...))
{
    // do stuff here
} // this is where the file gets flushed and closed

Si 2 méthodes fonctionnent sur le même fichier, passez le FileStream dans

static void mama(FileStream fs )
{
    fs .Read(new byte[3], 0, 3);
}
0
TheGeneral 4 nov. 2019 à 05:18