/ / Konvertieren von .db in binär - c #

Konvertieren von .db in binär - c #

Ich versuche zu konvertieren.DB-Datei binär, damit ich es über einen Webserver streamen kann. Ich bin ziemlich neu in C #. Ich bin so weit gekommen, Code-Schnipsel online zu betrachten, aber ich bin nicht wirklich sicher, ob der Code unten mich auf den richtigen Weg bringt. Wie kann ich die Daten schreiben, sobald ich es gelesen habe? BinaryReader automatisch öffnen und lesen Sie die gesamte Datei, so dass ich dann einfach im Binärformat schreiben kann?

class Program
{
static void Main(string[] args)
{
using (FileStream fs = new FileStream("output.bin", FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
long totalBytes = new System.IO.FileInfo("input.db").Length;
byte[] buffer = null;

BinaryReader binReader = new BinaryReader(File.Open("input.db", FileMode.Open));
}
}
}
}

Bearbeiten: Code zum Streamen der Datenbank:

[WebGet(UriTemplate = "GetDatabase/{databaseName}")]
public Stream GetDatabase(string databaseName)
{
string fileName = "\\computer\" + databaseName + ".db";

if (File.Exists(fileName))
{
FileStream stream = File.OpenRead(fileName);

if (WebOperationContext.Current != null)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "binary/.bin";
}

return stream;
}

return null;
}

Wenn ich meinen Server anrufe, bekomme ich nichts zurück. Wenn ich dieselbe Art von Methode für einen Inhaltstyp von image / .png verwende, funktioniert es einwandfrei.

Antworten:

2 für die Antwort № 1

Der gesamte von Ihnen gepostete Code wird tatsächlich die Datei kopieren eingabe.db zu der Datei Ausgabe.bin. Sie könnten dasselbe mit File.Copy erreichen.

BinaryReader wird nur alle Bytes der Datei einlesen. Es ist ein geeigneter Start, die Bytes in einen Ausgangsstrom zu streamen, der Binärdaten erwartet.

Sobald Sie die Bytes haben, die Ihrer Datei entsprechen, können Sie sie wie folgt in die Antwort des Webservers schreiben:

using (BinaryReader binReader = new BinaryReader(File.Open("input.db",
FileMode.Open)))
{
byte[] bytes = binReader.ReadBytes(int.MaxValue); // See note below
Response.BinaryWrite(bytes);
Response.Flush();
Response.Close();
Response.End();
}

Hinweis: Der Code binReader.ReadBytes (int.MaxValue) dient nur dazu, das Konzept zu demonstrieren. Verwenden Sie es nicht im Produktionscode, da das Laden einer großen Datei schnell zu einer OutOfMemoryException führen kann. Stattdessen sollten Sie die Datei in Blöcken einlesen und in den Antwortstream in Blöcken schreiben.

In dieser Antwort finden Sie Hinweise dazu, wie Sie dies tun können

https://stackoverflow.com/a/8613300/141172


Verwandte Fragen


Kommentare (0)

Einen Kommentar hinzufügen