en utilisant le code suivant pour tenter de lire un fichier volumineux (280MB) dans un tableau d'octets à partir d'un chemin UNCIOException la lecture d'un fichier volumineux à partir d'un chemin UNC dans un tableau d'octets en utilisant je suis .NET
public void ReadWholeArray(string fileName, byte[] data)
{
int offset = 0;
int remaining = data.Length;
log.Debug("ReadWholeArray");
FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
while (remaining > 0)
{
int read = stream.Read(data, offset, remaining);
if (read <= 0)
throw new EndOfStreamException
(String.Format("End of stream reached with {0} bytes left to read", remaining));
remaining -= read;
offset += read;
}
}
Ceci explose avec l'erreur suivante.
System.IO.IOException: Insufficient system resources exist to complete the requested
Si je lance cette aide d'un chemin local, il fonctionne très bien, dans mon cas de test le chemin UNC est en fait la pointe vers la boîte locale.
Une réflexion sur ce qui se passe ici?
Une raison particulière pour laquelle vous utilisez 4 pages de mémoire pour vos tampons? –
@Robert Davis: La taille importante n'est pas * les pages * memory * mais les tampons * IO *. Si vous lisez tellement que cela nécessite plusieurs requêtes d'E/S, c'est un peu inutile - si vous lisez si peu que cela correspond à une requête avec de l'espace à perdre, c'est un gaspillage dans l'autre sens. Mon expérience est que 64K fait souvent un bon compromis, mais cela dépend exactement de ce qui se passe aux niveaux inférieurs. –