2010-11-18 4 views
0

Peut-être que j'ai mal compris quelque chose fondamentalement sur le fonctionnement des fichiers mappés en mémoire, mais comment puis-je ajouter à la fin d'un fichier lorsque j'utilise MemoryMappedFile? le CreateViewAccessor me permet seulement de créer une vue de la capacité actuelle du fichierAjout à MemoryMappedFile?

Je pourrais écrire à la fin en utilisant le FileStream sous-jacent à la place mais ne va-t-il pas à l'encontre de l'utilisation de MemoryMapping? (J'ai pensé qu'il mettrait en cache et écrirait sur le disque l'ajout aussi). Une autre option consiste à mettre en cache les écritures et à les lire dans le cache plutôt que dans le flux de mémoire pour les données ajoutées.

Je me demandais ce que la pratique courante est de travailler avec fichier mappé en mémoire est que grandit donc je ne suis pas réinventer la roue encore une fois

Répondre

0

Vous ne pouvez pas changer la taille une fois créé les cartes de mémoire. Vous pouvez spécifier la taille lors de la création de la carte. voir http://msdn.microsoft.com/en-us/library/dd987389.aspx

La cartographie de la mémoire est une sorte de technique d'E/S avancée. Vous ne devriez pas l'utiliser sauf si (1) il est requis par la bibliothèque native; (2) vous avez besoin d'un accès aléatoire dans un environnement critique. Dans les deux cas, vous ne devez pas l'utiliser sans comprendre l'implication native (au niveau de la machine).