MemoryMappedFile.CreateFromFile Método

Definição

Cria um ficheiro mapeado de memória a partir de um ficheiro existente.

Sobrecargas

Name Description
CreateFromFile(String)

Cria um ficheiro mapeado de memória a partir de um ficheiro no disco.

CreateFromFile(String, FileMode)

Cria um ficheiro mapeado em memória que tem o modo de acesso especificado a partir de um ficheiro no disco.

CreateFromFile(String, FileMode, String)

Cria um ficheiro mapeado em memória que tem o modo de acesso e o nome especificados a partir de um ficheiro no disco.

CreateFromFile(String, FileMode, String, Int64)

Cria um ficheiro mapeado em memória que tem o modo de acesso, nome e capacidade especificados a partir de um ficheiro no disco.

CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)

Cria um ficheiro mapeado em memória que tem o modo de acesso, nome, capacidade e tipo de acesso especificados a partir de um ficheiro no disco.

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

Cria um ficheiro mapeado em memória a partir de um ficheiro existente com o modo de acesso, nome, herdabilidade e capacidade especificados.

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)

Cria um ficheiro mapeado em memória que tem o nome especificado, capacidade, tipo de acesso, permissões de segurança, herdabilidade e requisitos de eliminação a partir de um ficheiro no disco.

CreateFromFile(String)

Cria um ficheiro mapeado de memória a partir de um ficheiro no disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path);
static member CreateFromFile : string -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String) As MemoryMappedFile

Parâmetros

path
String

O caminho para o ficheiro para o mapa.

Devoluções

Um ficheiro mapeado de memória.

Exceções

path é uma cadeia vazia, contém apenas espaços em branco, ou tem um ou mais caracteres inválidos, conforme definido pelo GetInvalidFileNameChars() método.

-ou-

path refere-se a um dispositivo inválido.

path é null.

Ocorreu um erro de I/O.

path excede o comprimento máximo definido pelo sistema operativo.

O chamador não tem as permissões necessárias para o ficheiro.

Exemplos

O exemplo seguinte utiliza o CreateFromFile método para criar um ficheiro mapeado em memória e, em seguida, cria uma vista mapeada em memória para uma parte de um ficheiro extremamente 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);
    }
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Runtime.InteropServices

Class Program

    Sub Main()
        Dim offset As Long = &H10000000 ' 256 megabytes
        Dim length As Long = &H20000000 ' 512 megabytes

        ' Create the memory-mapped file.
        Using 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 accessor = mmf.CreateViewAccessor(offset, length)
                Dim colorSize As Integer = Marshal.SizeOf(GetType(MyColor))
                Dim color As MyColor
                Dim i As Long = 0

                ' Make changes to the view.
                Do While (i < length)
                    accessor.Read(i, color)
                    color.Brighten(10)
                    accessor.Write(i, color)
                    i += colorSize
                Loop
            End Using
        End Using
    End Sub
End Class

Public Structure MyColor
    Public Red As Short
    Public Green As Short
    Public Blue As Short
    Public Alpha As Short

    ' Make the view brighter.
    Public Sub Brighten(ByVal value As Short)
        Red = CType(Math.Min(Short.MaxValue, (CType(Red, Integer) + value)), Short)
        Green = CType(Math.Min(Short.MaxValue, (CType(Green, Integer) + value)), Short)
        Blue = CType(Math.Min(Short.MaxValue, (CType(Blue, Integer) + value)), Short)
        Alpha = CType(Math.Min(Short.MaxValue, (CType(Alpha, Integer) + value)), Short)
    End Sub
End Structure

Ver também

Aplica-se a

CreateFromFile(String, FileMode)

Cria um ficheiro mapeado em memória que tem o modo de acesso especificado a partir de um ficheiro no disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode);
static member CreateFromFile : string * System.IO.FileMode -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode) As MemoryMappedFile

Parâmetros

path
String

O caminho para o ficheiro a mapear.

mode
FileMode

modo de acesso; deve ser Open.

Devoluções

Um ficheiro mapeado em memória que tem o modo de acesso especificado.

Exceções

path é uma cadeia vazia, contém apenas espaços em branco, ou tem um ou mais caracteres inválidos, conforme definido pelo GetInvalidFileNameChars() método.

-ou-

path refere-se a um dispositivo inválido.

-ou-

mode é Append.

path é null.

mode é Create, CreateNew, ou Truncate.

-ou-

mode é OpenOrCreate e o ficheiro no disco não existe.

-ou-

Ocorreu um erro de I/O.

path excede o comprimento máximo definido pelo sistema operativo.

O chamador não tem as permissões necessárias para o ficheiro.

Observações

O mode parâmetro refere-se ao ficheiro de origem no disco. Pode usar apenas o Open valor de enumeração para criar o ficheiro de memória mapeado a partir do ficheiro de origem no disco.

Ver também

Aplica-se a

CreateFromFile(String, FileMode, String)

Cria um ficheiro mapeado em memória que tem o modo de acesso e o nome especificados a partir de um ficheiro no disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName);
static member CreateFromFile : string * System.IO.FileMode * string -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String) As MemoryMappedFile

Parâmetros

path
String

O caminho para o ficheiro a mapear.

mode
FileMode

modo de acesso; deve ser Open.

mapName
String

Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.

Devoluções

Um ficheiro de memória mapeada que tem o nome especificado e o modo de acesso.

Exceções

path é uma cadeia vazia, contém apenas espaços em branco, ou tem um ou mais caracteres inválidos, conforme definido pelo GetInvalidFileNameChars() método.

-ou-

path refere-se a um dispositivo inválido.

-ou-

mapName é uma corda vazia.

-ou-

mode é Append.

path é null.

mode é Create, CreateNew, ou Truncate.

-ou-

mode é OpenOrCreate e o ficheiro no disco não existe.

-ou-

Ocorreu um erro de I/O.

path excede o comprimento máximo definido pelo sistema operativo.

O chamador não tem as permissões necessárias para o ficheiro.

Observações

O mode parâmetro refere-se ao ficheiro de origem no disco. Pode usar apenas o Open valor de enumeração para criar o ficheiro de memória mapeado a partir do ficheiro de origem no disco.

Aplica-se a

CreateFromFile(String, FileMode, String, Int64)

Cria um ficheiro mapeado em memória que tem o modo de acesso, nome e capacidade especificados a partir de um ficheiro no disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity);
static member CreateFromFile : string * System.IO.FileMode * string * int64 -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String, capacity As Long) As MemoryMappedFile

Parâmetros

path
String

O caminho para o ficheiro a mapear.

mode
FileMode

modo de acesso; pode ser qualquer um dos FileMode valores da enumeração, exceto Append.

mapName
String

Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.

capacity
Int64

O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória. Especifique 0 para definir a capacidade para o tamanho do ficheiro no disco.

Devoluções

Um ficheiro mapeado em memória que tem as características especificadas.

Exceções

path é uma cadeia vazia, contém apenas espaços em branco, ou tem um ou mais caracteres inválidos, conforme definido pelo GetInvalidFileNameChars() método.

-ou-

path refere-se a um dispositivo inválido.

-ou-

mapName é uma corda vazia.

-ou-

mode é Append.

path é null.

capacity é maior do que o tamanho do espaço de endereçamento lógico.

-ou-

capacity é inferior a zero.

-ou-

capacity é menor do que o tamanho do ficheiro (mas não zero).

-ou-

capacity é zero, e o tamanho do ficheiro no disco também é zero.

Ocorreu um erro de I/O.

path excede o comprimento máximo definido pelo sistema operativo.

O chamador não tem as permissões necessárias para o ficheiro.

Observações

O mode parâmetro refere-se ao ficheiro de origem no disco.

Se capacity for maior do que o tamanho do ficheiro no disco, o ficheiro no disco é aumentado para corresponder à capacidade especificada, mesmo que nenhum dado seja escrito no ficheiro mapeado em memória. Para evitar que isto aconteça, especifique 0 (zero) para a capacidade padrão, que será definida capacity internamente para o tamanho do ficheiro no disco.

Aplica-se a

CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)

Cria um ficheiro mapeado em memória que tem o modo de acesso, nome, capacidade e tipo de acesso especificados a partir de um ficheiro no disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
[<System.Security.SecurityCritical>]
static member CreateFromFile : string * System.IO.FileMode * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
static member CreateFromFile : string * System.IO.FileMode * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String, capacity As Long, access As MemoryMappedFileAccess) As MemoryMappedFile

Parâmetros

path
String

O caminho para o ficheiro a mapear.

mode
FileMode

modo de acesso; pode ser qualquer um dos FileMode valores da enumeração, exceto Append.

mapName
String

Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.

capacity
Int64

O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória. Especifique 0 para definir a capacidade para o tamanho do ficheiro no disco.

access
MemoryMappedFileAccess

Um dos valores de enumeração que especifica o tipo de acesso permitido ao ficheiro mapeado em memória.

Devoluções

Um ficheiro mapeado em memória que tem as características especificadas.

Atributos

Exceções

mapName é uma corda vazia.

-ou-

access não é um valor permitido.

-ou-

path especifica um ficheiro vazio.

-ou-

access é especificado como Read e a capacidade é maior do que o tamanho do ficheiro indicado por path.

-ou-

mode é Append.

path é null.

capacity é maior do que o tamanho do espaço de endereçamento lógico.

-ou-

capacity é inferior a zero.

-ou-

capacity é menor do que o tamanho do ficheiro (mas não zero).

-ou-

capacity é zero, e o tamanho do ficheiro no disco também é zero.

-ou-

access não é um valor definido MemoryMappedFileAccess .

-ou-

O tamanho do ficheiro indicado por path é maior que capacity.

-ou-

Ocorreu um erro de I/O.

path excede o comprimento máximo definido pelo sistema operativo.

O chamador não tem as permissões necessárias para o ficheiro.

Observações

O mode parâmetro refere-se ao ficheiro de origem no disco.

Se capacity for maior do que o tamanho do ficheiro no disco, o ficheiro no disco é aumentado para corresponder à capacidade especificada, mesmo que nenhum dado seja escrito no ficheiro mapeado em memória. Para evitar que isto aconteça, especifique 0 (zero) para a capacidade padrão, que será definida capacity internamente para o tamanho do ficheiro no disco.

Ver também

Aplica-se a

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

Cria um ficheiro mapeado em memória a partir de um ficheiro existente com o modo de acesso, nome, herdabilidade e capacidade especificados.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::IO::FileStream ^ fileStream, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::HandleInheritability inheritability, bool leaveOpen);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen);
static member CreateFromFile : System.IO.FileStream * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileStream As FileStream, mapName As String, capacity As Long, access As MemoryMappedFileAccess, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile

Parâmetros

fileStream
FileStream

O fluxo de ficheiros do ficheiro existente.

mapName
String

Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.

capacity
Int64

O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória. Especifique 0 para definir a capacidade para o tamanho de filestream.

access
MemoryMappedFileAccess

Um dos valores de enumeração que especifica o tipo de acesso permitido ao ficheiro mapeado em memória.

Este parâmetro não pode ser definido para Write.

inheritability
HandleInheritability

Um dos valores de enumeração que especifica se um handle do ficheiro mapeado em memória pode ser herdado por um processo filho. A predefinição é None.

leaveOpen
Boolean

Um valor que indica se deve fechar o fluxo de ficheiros de origem quando o MemoryMappedFile é eliminado.

Devoluções

Um ficheiro mapeado em memória que tem as características especificadas.

Exceções

mapName é null ou uma corda vazia.

-ou-

capacity e o comprimento do ficheiro é zero.

-ou-

access é definido para Write ou Write valor de enumeração, o que não é permitido.

-ou-

access é definido como Read e capacity é maior do que o comprimento de filestream.

fileStream é null.

capacity é inferior a zero.

-ou-

capacity é inferior ao tamanho do ficheiro.

-ou-

access não é um valor de enumeração válido MemoryMappedFileAccess .

-ou-

inheritability não é um valor de enumeração válido HandleInheritability .

Aplica-se a

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)

Cria um ficheiro mapeado em memória que tem o nome especificado, capacidade, tipo de acesso, permissões de segurança, herdabilidade e requisitos de eliminação a partir de um ficheiro no disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::IO::FileStream ^ fileStream, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileSecurity ^ memoryMappedFileSecurity, System::IO::HandleInheritability inheritability, bool leaveOpen);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity memoryMappedFileSecurity, System.IO.HandleInheritability inheritability, bool leaveOpen);
[<System.Security.SecurityCritical>]
static member CreateFromFile : System.IO.FileStream * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileStream As FileStream, mapName As String, capacity As Long, access As MemoryMappedFileAccess, memoryMappedFileSecurity As MemoryMappedFileSecurity, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile

Parâmetros

fileStream
FileStream

O para fileStream o ficheiro para mapear.

mapName
String

Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.

capacity
Int64

O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória. Especifique 0 para definir a capacidade para o tamanho do ficheiro no disco.

access
MemoryMappedFileAccess

Um dos valores de enumeração que especifica o tipo de acesso permitido ao ficheiro mapeado em memória.

Este parâmetro não pode ser definido para Write.

memoryMappedFileSecurity
MemoryMappedFileSecurity

As permissões que podem ser concedidas para acesso a ficheiros e operações em ficheiros mapeados em memória.

Este parâmetro pode ser null.

inheritability
HandleInheritability

Um dos valores de enumeração que especifica se um handle do ficheiro mapeado em memória pode ser herdado por um processo filho. A predefinição é None.

leaveOpen
Boolean

true não dispor fileStream depois de o MemoryMappedFile fechar; false dispor-se fileStream.

Devoluções

Um ficheiro mapeado em memória que tem as características especificadas.

Atributos

Exceções

mapName é uma corda vazia.

-ou-

capacity e o comprimento do ficheiro é zero.

-ou-

access é definido para o Read valor de enumeração ou Write , o que não é permitido.

fileStream é null.

capacity é inferior a zero.

-ou-

capacity é inferior ao tamanho do ficheiro.

-ou-

access não é um valor de enumeração válido MemoryMappedFileAccess .

-ou-

inheritability não é um valor de enumeração válido HandleInheritability .

fileStream estava fechado.

access é definido como ReadWrite quando fileStreamo acesso de s é definido como Read ou Write.

mapName já existe.

Observações

Se capacity for maior do que o tamanho do ficheiro no disco, o ficheiro no disco é aumentado para corresponder à capacidade especificada, mesmo que nenhum dado seja escrito no ficheiro mapeado em memória. Para evitar que isto aconteça, especifique 0 (zero) para a capacidade padrão, que será definida capacity internamente para o tamanho do ficheiro no disco.

Ver também

Aplica-se a