Konvertieren FileStream MemoryStream erstellt Hunderte von identischen Dateien?
Ich bin Zugriff auf einen httpwebrequest, gibt eine pdf-Datei als Antwort. Ich lese, dass die Antwort in einen memory-stream und später auf die Konvertierung in eine Datei. Das problem ist, ist, dass Hunderte von Dateien erstellt werden. Nicht sicher, warum, ich habe viele Wege versucht, und alle tun das gleiche...
Dies ist die erste Methode liefert die memorystream.
MemoryStream memStream = new MemoryStream();
byte[] buffer = new byte[2048];
int bytesRead = 0;
do
{
bytesRead = _ResponseStream.Read(buffer, 0, buffer.Length);
memStream.Write(buffer, 0, bytesRead);
} while (bytesRead != 0);
Zweiten zu konvertieren, um FileStream...
byte[] data = stream.ToArray();
FileStream fs = new FileStream(newFile, FileMode.CreateNew);
fs.Write(data, 0, data.Length);
Irgendwelche Ideen?
BEARBEITEN, UM HINZUZUFÜGEN MEHR CODE...
public MemoryStream GetToStream()
{
if (_Req == null)
throw new Exception("HttpWebRequest is not initialised");
GetResult(_Req);
MemoryStream memStream = new MemoryStream();
byte[] buffer = new byte[2048];
int bytesRead = 0;
do
{
bytesRead = _ResponseStream.Read(buffer, 0, buffer.Length);
memStream.Write(buffer, 0, bytesRead);
} while (bytesRead != 0);
_ResponseStream.Close();
if (memStream.Length > 0)
return memStream;
else return null;
}
ist newFile der zugeordneten Pfad auf dem server die Datei zu erstellen.
byte[] data = stream.ToArray();
FileStream fs = new FileStream(newFile, FileMode.Create);
fs.Write(data, 0, data.Length);
fs.Close();
Habe ich versucht den stream.Writecontentto(fs), und dasselbe tritt. Ganz bizarrer.
InformationsquelleAutor mickyjtwin | 2009-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist überhaupt nicht klar, warum man mehrere Dateien, aber Sie sollten in der Lage sein zu bekommen einige Informationen auf der Basis von Dateinamen - jede entspricht einem Wert von
newFile
.Ich beachten Sie, dass Sie nicht schließen Sie die Datei-stream, die durch die Art und Weise. Mit
- Datei.WriteAllBytes
ist eine viel einfachere Weise erreichen Sie Ihr Ziel, und nicht verlangen, dass Sie etwas schließen:Alternative ist immer noch mit einem
FileStream
(mit einemusing
- Anweisung), aber die VerwendungMemoryStream.Writecontentto
zu vermeiden, wird der Anruf zuToArray
hat, eine Kopie aller Daten:InformationsquelleAutor Jon Skeet
Ich würde vorschlagen, dass Sie erhalten mehr Anfragen von Ihren Kunden, als Sie denken. Überprüfen Sie Ihre webserver-access-log-Datei. Der code-Schnipsel, die Sie zeigen, scheinen vernünftig, aber nicht wirklich zeigen, reicht der code um das problem zu erklären - Sie werden nicht angezeigt im rechten Teil des code. Sowieso, überprüfen Sie die access-log oder eine Art der Ablaufverfolgung.
InformationsquelleAutor krosenvold