Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo MemoryMappedFile.CreateFromFile (String)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Crea un file mappato alla memoria da un file su disco.

Spazio dei nomi:   System.IO.MemoryMappedFiles
Assembly:  System.Core (in System.Core.dll)

public static MemoryMappedFile CreateFromFile(
	string path
)

Parametri

path
Type: System.String

Percorso del file da mappare.

Valore restituito

Type: System.IO.MemoryMappedFiles.MemoryMappedFile

File mappato alla memoria.

Exception Condition
ArgumentException

path è una stringa vuota, contiene solo spazi vuoti o contiene uno o più caratteri non validi, come definito di Path.GetInvalidFileNameChars metodo.

-oppure-

path fa riferimento a un dispositivo non valido.

ArgumentNullException

path è null.

IOException

Si è verificato un errore di I/O.

PathTooLongException

path supera la lunghezza massima definita dal sistema operativo. In Windows, i percorsi devono contenere meno di 248 caratteri e i nomi di file devono contenere meno di 260 caratteri.

SecurityException

Il chiamante non dispone delle autorizzazioni necessarie per il file.

Nell'esempio seguente viene utilizzata la CreateFromFile metodo per creare un file mappato alla memoria e quindi crea una visualizzazione mappato alla memoria a una parte di un file molto grande.

using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;

class Program
{
    static void Main(string[] args)
    {
        long offset = 0x10000000; // 256 megabytes
        long length = 0x20000000; // 512 megabytes

        // Create the memory-mapped file.
        using (var mmf = MemoryMappedFile.CreateFromFile(@"c:\ExtremelyLargeImage.data", FileMode.Open,"ImgA"))
        {
            // Create a random access view, from the 256th megabyte (the offset)
            // to the 768th megabyte (the offset plus length).
            using (var accessor = mmf.CreateViewAccessor(offset, length))
            {
                int colorSize = Marshal.SizeOf(typeof(MyColor));
                MyColor color;

                // Make changes to the view.
                for (long i = 0; i < length; i += colorSize)
                {
                    accessor.Read(i, out color);
                    color.Brighten(10);
                    accessor.Write(i, ref color);
                }
            }
        }
    }
}

public struct MyColor
{
    public short Red;
    public short Green;
    public short Blue;
    public short Alpha;

    // Make the view brighter.
    public void Brighten(short value)
    {
        Red = (short)Math.Min(short.MaxValue, (int)Red + value);
        Green = (short)Math.Min(short.MaxValue, (int)Green + value);
        Blue = (short)Math.Min(short.MaxValue, (int)Blue + value);
        Alpha = (short)Math.Min(short.MaxValue, (int)Alpha + value);
    }
}

.NET Framework
Disponibile da 4.0
Torna all'inizio
Mostra: