7
votes

Fichier l'accès en lecture seule indépendamment des serrures (C #)

Comment puis-je ouvrir (en utilisant c #) un fichier déjà ouvert (dans MS Word, par exemple)? Je pensais que si j'ouvre le fichier pour lire l'accès E.g.

FileStream f= new FileStream('filename', FileMode.Open, FileAccess.ReadWrite);

c# io

0 commentaires

3 Réponses :


1
votes

Votre code utilise le fichier FileAccess.Read * Ecrire un drapeau. Essayez de lire.


1 commentaires

Désolé, j'utilisais réellement en filaccess.Lead



7
votes

Vous souhaitez définir FileAccess = Lire et FileShare = ReadWrite. Voici un excellent article à ce sujet (avec une explication de pourquoi):

http://coding.infoconex.com/post/2009/04/how-do-i-open-a-file-that-is-in-uuse-in-c.aspx


0 commentaires

1
votes

Je sais que c'est un ancien post. Mais j'avais besoin de cela et je pense que cette réponse peut aider les autres.

Copier un fichier verrouillé de la manière dont l'explorateur le fait. P>

Essayez d'utiliser cette méthode d'extension pour obtenir une copie du fichier verrouillé. P>

Exemple d'utilisation H3>
internal static class LockedFiles
{
    /// <summary>
    /// Makes a copy of a file that was locked for usage in an other host application.
    /// </summary>
    /// <returns> String with path to the file. </returns>
    public static string CopyLocked(this FileInfo sourceFile, string copyTartget = null)
    {
        if (sourceFile is null)
            throw new ArgumentNullException(nameof(sourceFile));
        if (!sourceFile.Exists)
            throw new InvalidOperationException($"Parameter {nameof(sourceFile)}: File should already exist!");

        if (string.IsNullOrWhiteSpace(copyTartget))
            copyTartget = Path.GetTempFileName();

        using (var inputFile = new FileStream(sourceFile.FullName, FileMode.Open, 
        FileAccess.Read, FileShare.ReadWrite))
        using (var outputFile = new FileStream(copyTartget, FileMode.Create))
            inputFile.CopyTo(outputFile, 0x10000);

        return copyTartget;
    }
}


0 commentaires