Frage

Ich bin um eine ZIP-Datei enthält, um Dokumente zu erstellen, die auf dem Server vorhanden sein. Ich bin mit der .Net-Paket-Klasse so zu tun, und ein neues Paket erstellen (die die Zip-Datei ist) ich entweder einen Pfad zu einer physischen Datei oder einen Stream haben müssen. Ich versuche nicht, eine tatsächliche Datei zu erstellen, die Zip-Datei sein würde, statt nur einen Strom zu erzeugen, die im internen Speicher oder etwas existieren würden.

Meine Frage ist, wie instanziert einen neuen Stream (das heißt Filestream, Memorystream, etc.), ohne eine physische Datei instantiate zu haben.

War es hilfreich?

Lösung

Memory hat mehr Konstruktorüberladungen , von denen keine eine Datei benötigen.

Andere Tipps

Es ist ein Beispiel dafür, wie dies zu tun, auf dem MSDN Seite für Memory :

using System;
using System.IO;
using System.Text;

class MemStream
{
    static void Main()
    {
        int count;
        byte[] byteArray;
        char[] charArray;
        UnicodeEncoding uniEncoding = new UnicodeEncoding();

        // Create the data to write to the stream.
        byte[] firstString = uniEncoding.GetBytes(
            "Invalid file path characters are: ");
        byte[] secondString = uniEncoding.GetBytes(
            Path.GetInvalidPathChars());

        using(MemoryStream memStream = new MemoryStream(100))
        {
            // Write the first string to the stream.
            memStream.Write(firstString, 0 , firstString.Length);

            // Write the second string to the stream, byte by byte.
            count = 0;
            while(count < secondString.Length)
            {
                memStream.WriteByte(secondString[count++]);
            }

            // Write the stream properties to the console.
            Console.WriteLine(
                "Capacity = {0}, Length = {1}, Position = {2}\n",
                memStream.Capacity.ToString(),
                memStream.Length.ToString(),
                memStream.Position.ToString());

            // Set the position to the beginning of the stream.
            memStream.Seek(0, SeekOrigin.Begin);

            // Read the first 20 bytes from the stream.
            byteArray = new byte[memStream.Length];
            count = memStream.Read(byteArray, 0, 20);

            // Read the remaining bytes, byte by byte.
            while(count < memStream.Length)
            {
                byteArray[count++] =
                    Convert.ToByte(memStream.ReadByte());
            }

            // Decode the byte array into a char array
            // and write it to the console.
            charArray = new char[uniEncoding.GetCharCount(
                byteArray, 0, count)];
            uniEncoding.GetDecoder().GetChars(
                byteArray, 0, count, charArray, 0);
            Console.WriteLine(charArray);
        }
    }
}

Ist das, was Sie suchen?

Sie können einen neuen Stream und schreiben Sie es schaffen. Sie haben nicht eine Datei benötigen Sie das Objekt zu konstruieren.

http://msdn.microsoft.com/en -US / library / system.io.memorystream.aspx

Write Methode:

http://msdn.microsoft.com /en-us/library/system.io.memorystream.write.aspx

Konstrukteurs für Speicher Stream:

http://msdn.microsoft.com /en-us/library/system.io.memorystream.memorystream.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top