Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Package (Clase)

Representa un contenedor que puede almacenar varios objetos de datos.

Espacio de nombres:  System.IO.Packaging
Ensamblado:  WindowsBase (en WindowsBase.dll)
public abstract class Package : IDisposable

El tipo Package expone los siguientes miembros.

  NombreDescripción
Método protegidoPackage(FileAccess)Inicializa una nueva instancia de la clase Package con FileAccess especificada.
Método protegidoPackage(FileAccess, Boolean)Inicializa una nueva instancia de la clase Package con una FileAccess y una opción de transmisión por secuencias especificadas.
Arriba
  NombreDescripción
Propiedad públicaFileOpenAccessObtiene la configuración de acceso de archivos del paquete.
Propiedad públicaPackagePropertiesObtiene las propiedades básicas del paquete.
Arriba
  NombreDescripción
Método públicoCloseGuarda y cierra el paquete más todas las secuencias de los elementos subyacentes.
Método públicoCreatePart(Uri, String)Crea un nuevo elemento sin comprimir con un URI y el tipo de contenido especificados.
Método públicoCreatePart(Uri, String, CompressionOption)Crea un nuevo elemento con un URI, tipo de contenido y opción de compresión especificados.
Método protegidoCreatePartCoreCuando se invalida en una clase derivada, crea un nuevo elemento en el paquete.
Método públicoCreateRelationship(Uri, TargetMode, String)Crea una relación de nivel de paquete en un elemento con un URI, modo de destino y tipo de relación especificados.
Método públicoCreateRelationship(Uri, TargetMode, String, String)Crea una relación de nivel de paquete en un elemento con un URI, modo de destino, tipo de relación y identificador (id.) especificados.
Método públicoDeletePartElimina un elemento con un URI especificado desde el paquete.
Método protegidoDeletePartCoreCuando se invalida en una clase derivada, elimina un elemento con un URI especificado.
Método públicoDeleteRelationshipElimina una relación de nivel del paquete.
Método protegidoDisposeVacía y guarda el contenido de todos los elementos y relaciones, cierra el paquete y libera todos los recursos.
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoFlushGuarda el contenido de todos los elementos y relaciones contenidos en el paquete.
Método protegidoFlushCoreCuando se invalida en una clase derivada, guarda el contenido de todos los elementos y relaciones en el almacén de la clase derivada.
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetPartDevuelve el elemento con un URI especificado.
Método protegidoGetPartCoreCuando se invalida en una clase derivada, devuelve el elemento tratado por un URI especificado.
Método públicoGetPartsDevuelve una colección de todos los elementos en el paquete.
Método protegidoGetPartsCoreCuando se invalida en una clase derivada, devuelve una matriz de todos los elementos del paquete.
Método públicoGetRelationshipDevuelve la relación de nivel de paquete con un identificador especificado.
Método públicoGetRelationshipsDevuelve una colección de todas las relaciones de nivel de paquete.
Método públicoGetRelationshipsByTypeDevuelve una colección de todas las relaciones de nivel de paquete que coincidan con una propiedad RelationshipType especificada.
Método públicoGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoMiembro estáticoOpen(Stream)Abre un paquete en una secuencia de E/S especificada.
Método públicoMiembro estáticoOpen(String)Abre un paquete en una ruta de acceso y un nombre de archivo especificados.
Método públicoMiembro estáticoOpen(Stream, FileMode)Abre un paquete con una secuencia de E/S y un modo de archivo especificados.
Método públicoMiembro estáticoOpen(String, FileMode)Abre un paquete en una ruta de acceso especificada con un modo de archivo especificado.
Método públicoMiembro estáticoOpen(Stream, FileMode, FileAccess)Abre un paquete con una secuencia de E/S, un modo de archivo y la configuración de acceso de archivo especificados.
Método públicoMiembro estáticoOpen(String, FileMode, FileAccess)Abre un paquete en una ruta de acceso especificada con un modo de archivo y la configuración de acceso de archivo especificados.
Método públicoMiembro estáticoOpen(String, FileMode, FileAccess, FileShare)Abre un paquete en una ruta de acceso especificada con un modo de archivo, acceso de archivo y configuración de uso compartido de archivos especificados.
Método públicoPartExistsIndica si un elemento con un URI especificado está en el paquete.
Método públicoRelationshipExistsIndica si una relación de nivel de paquete con un identificador especificado está contenida en el paquete.
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba
  NombreDescripción
Implementación explícita de interfacesMétodo privadoIDisposable.DisposeEste miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no tiene fines de uso de aplicación. En su lugar, use el método Dispose con seguridad de tipos.
Arriba

Package es una clase abstracta que se puede utilizar para organizar objetos en una entidad única de un formato físico definido con fines de portabilidad y acceso eficaz.

Un archivo ZIP es el formato físico primario de Package. Otras implementaciones de Package pueden usar otros formatos físicos como un documento XML, una base de datos o un servicio Web.

Como ocurre con un sistema de archivos, a los elementos contenidos en una clase Package se les hace referencia en una organización jerárquica de carpetas y archivos.

Aunque la propia clase Package sea una clase abstracta, el método Open usa la clase ZipPackage derivada como predeterminada.

Una clase PackagePart ("elemento") es la clase abstracta que representa un objeto que está almacenado en una clase Package.

Una clase PackageRelationship ("relación") define una asociación entre una clase Package o PackagePart de origen y un objeto de destino. La clase PackageRelationship puede ser de dos tipos, cada uno de los cuales puede tener dos formas:

  • Una relación de nivel de paquete (creado por el método Package.CreateRelationship) establece una relación entre una clase Package y:

    • Un elemento de destino dentro del paquete.

    • Un recurso de destino fuera del paquete.

  • Una relación de nivel de elemento (creado por el método PackagePart.CreateRelationship) establece una relación entre la clase PackagePart de origen y:

    • Otro elemento de destino dentro del paquete.

    • Un recurso de destino fuera del paquete.

La clase Package de origen de la relación o la clase PackagePart de origen se consideran las "propietarias" de la relación. Cuando se elimina el objeto de origen, también se eliminan todas las relaciones de su propiedad. El proceso de creación o eliminación de una relación no cambia físicamente los objetos de origen o destino en modo alguno.

Una clase PackageDigitalSignature ("firma digital") está formada por los elementos y las relaciones que representan una firma digital incluida con una clase Package. La firma digital identifica al originador y valida que no se hayan modificado los elementos y las relaciones contenidos en la clase Package.

Los paquetes también admiten la administración de derechos digitales (DRM), que permite que los elementos de contenido de una clase Package se cifren con derechos de acceso específicos otorgados a los usuarios autorizados.

Basada en la arquitectura de la clase Package, una clase XpsDocument es un tipo de paquete diseñado para almacenar documentos basados en la especificación XML Paper Specification (XPS) abierta.

Microsoft .NET Framework usa paquetes para almacenar contenido, recursos y relaciones de las páginas y documentos que utilizan un archivo ZIP estándar de forma predeterminada. Como ocurre con cualquier archivo ZIP, la aplicación puede usar las clases System.IO.Packaging para almacenar y proteger opcionalmente cualquier tipo o número de archivos de datos en un único contenedor de fácil acceso.

Para obtener más información, vea la especificación Open Packaging Conventions (OPC), que está disponible para su descarga en http://go.microsoft.com/fwlink/?LinkID=71255.

En el ejemplo siguiente, se muestran los pasos básicos para crear una clase Package. En este ejemplo, se crea un paquete que va a contener un documento junto con una imagen gráfica que se muestra como parte del documento. (Es algo parecido al caso en el que un archivo HTML tiene una etiqueta < IMG > que hace referencia a un archivo de imagen externo.) También se incluyen dos elementos de PackageRelationship en el paquete. El primero, una relación de "nivel de paquete", define el elemento del documento como el elemento raíz del paquete. El segundo, una relación de "nivel de elemento", define la asociación entre el elemento del documento (el "origen" de la relación de nivel de elemento) y su uso del elemento de imagen (el "destino" de la relación de nivel de elemento). Para ver el ejemplo completo, vea Writing a Package Sample.


//  -------------------------- CreatePackage --------------------------
/// <summary>
///   Creates a package zip file containing specified
///   content and resource files.</summary>
private static void CreatePackage()
{
    // Convert system path and file names to Part URIs. In this example
    // Uri partUriDocument /* /Content/Document.xml */ =
    //     PackUriHelper.CreatePartUri(
    //         new Uri("Content\Document.xml", UriKind.Relative));
    // Uri partUriResource /* /Resources/Image1.jpg */ =
    //     PackUriHelper.CreatePartUri(
    //         new Uri("Resources\Image1.jpg", UriKind.Relative));
    Uri partUriDocument = PackUriHelper.CreatePartUri(
                              new Uri(documentPath, UriKind.Relative));
    Uri partUriResource = PackUriHelper.CreatePartUri(
                              new Uri(resourcePath, UriKind.Relative));

    // Create the Package
    // (If the package file already exists, FileMode.Create will
    //  automatically delete it first before creating a new one.
    //  The 'using' statement insures that 'package' is
    //  closed and disposed when it goes out of scope.)
    using (Package package =
        Package.Open(packagePath, FileMode.Create))
    {
        // Add the Document part to the Package
        PackagePart packagePartDocument =
            package.CreatePart(partUriDocument,
                           System.Net.Mime.MediaTypeNames.Text.Xml);

        // Copy the data to the Document Part
        using (FileStream fileStream = new FileStream(
               documentPath, FileMode.Open, FileAccess.Read))
        {
            CopyStream(fileStream, packagePartDocument.GetStream());
        }// end:using(fileStream) - Close and dispose fileStream.

        // Add a Package Relationship to the Document Part
        package.CreateRelationship(packagePartDocument.Uri,
                                   TargetMode.Internal,
                                   PackageRelationshipType);

        // Add a Resource Part to the Package
        PackagePart packagePartResource =
            package.CreatePart(partUriResource,
                           System.Net.Mime.MediaTypeNames.Image.Jpeg);

        // Copy the data to the Resource Part
        using (FileStream fileStream = new FileStream(
               resourcePath, FileMode.Open, FileAccess.Read))
        {
            CopyStream(fileStream, packagePartResource.GetStream());
        }// end:using(fileStream) - Close and dispose fileStream.

        // Add Relationship from the Document part to the Resource part
        packagePartDocument.CreateRelationship(
                                new Uri(@"../resources/image1.jpg",
                                UriKind.Relative),
                                TargetMode.Internal,
                                ResourceRelationshipType);

    }// end:using (Package package) - Close and dispose package.

}// end:CreatePackage()


//  --------------------------- CopyStream ---------------------------
/// <summary>
///   Copies data from a source stream to a target stream.</summary>
/// <param name="source">
///   The source stream to copy from.</param>
/// <param name="target">
///   The destination stream to copy to.</param>
private static void CopyStream(Stream source, Stream target)
{
    const int bufSize = 0x1000;
    byte[] buf = new byte[bufSize];
    int bytesRead = 0;
    while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
        target.Write(buf, 0, bytesRead);
}// end:CopyStream()


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.