Datei im Speicher erstellen, nicht im Dateisystem

8

Ich verwende eine .NET-Bibliotheksfunktion, die Dateien auf einen Server hochlädt und als Parameter einen Pfad zu einer Datei verwendet. Die Daten, die ich senden möchte, sind klein und werden zur Laufzeit erstellt. Ich kann es in einer temporären Datei speichern und dann hochladen.

Da meine Anwendung in einer Vielzahl von Umgebungen eingesetzt wird und ich nicht weiß, ob ich die temporäre Datei zuverlässig erstellen kann, wäre es besser, einen Pfad zu einer virtuellen Datei übergeben zu können im Speicher.

Ich kann die Bibliothek nicht ändern; Ich weiß, dass es Folgendes in der Datei ausführt:

%Vor%

Ist es möglich, das Schreiben der Datei auf die Festplatte zu vermeiden?

Danke

Bearbeiten:

Der Bibliotheksaufruf ist Webclient.UploadFile, wie in den Antworten darauf hingewiesen, gibt es viele Möglichkeiten, um zu umgehen, einschließlich der Verwendung von alternativen Bibliotheken, von denen es viele gibt.

    
Stefan 03.05.2013, 13:19
quelle

3 Antworten

10

Nein, Ihre Bibliothek ist in diesem Aspekt grundsätzlich unflexibel, indem sie FileStream verwendet.

Optionen:

  • Verwenden Sie einen Ramdrive und geben Sie einen Pfad an, um zu vermeiden, dass Sie tatsächlich auf den Datenträger stoßen
  • Je nachdem, woher die Bibliothek kommt, fordern Sie entweder eine Änderung an (wenn es sich um eine geschlossene Quelle handelt) oder nur make , wenn es sich um eine Open Source
  • handelt
  • Verwenden Sie eine andere Bibliothek. (Was ist das Besondere an diesem?)
Jon Skeet 03.05.2013, 13:23
quelle
6

Wenn die Bibliothek eine andere Methode verfügbar macht, die ein Stream akzeptiert, könnten Sie ein MemoryStream .

Wenn es eine SafeFileHandle akzeptiert, könnten Sie eine MemoryMappedFile verwenden. .

Andernfalls müssen Sie mit einer Datei auf der Festplatte zufrieden sein.

    
Kendall Frey 03.05.2013 13:28
quelle
2

Wenn ich Sie richtig verstanden habe, möchten Sie eine der anderen WebClient.Upload* -Methoden verwenden. Wenn Sie beispielsweise Ihre Daten in byte[] gespeichert haben, verwenden Sie UploadData .

Eine weitere Option, wenn Sie die Daten als Stream hochladen möchten, ist OpenWrite .

    
svick 03.05.2013 14:01
quelle

Tags und Links