/ / Претвори .дб у бинарни - ц #

Претвори .дб у бинарни - ц #

Ја покушавам да претворим.дб фајл на бинарни начин, тако да могу да га преточим преко веб сервера. Ја сам прилично нов Ц # -у дошао сам колико гледам у шифре кода на мрежи, али нисам сигуран да ли је код испод постављен на прави пут. Како могу да напишем податке кад га прочитам? BinaryReader аутоматски отворите и читате читаву датотеку, тако да могу онда само написати у бинарном формату?

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));
}
}
}
}

Измени: Код за претварање базе података:

[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;
}

Када позовем свој сервер, не добијам ништа више. Када користим ову исту врсту метода за врсту садржаја слике / .пнг, она ради добро.

Одговори:

2 за одговор № 1

Све шифре које сте поставили ће заправо копирати датотеку инпут.дб у датотеку оутпут.бин. То можете учинити помоћу датотеке Филе.Цопи.

БинариРеадер ће само читати у свим бајтовима датотеке. То је погодан почетак стримовања бајтова у излазни ток који очекује бинарне податке.

Када имате бајтове који одговара вашој датотеци, можете их написати на одговор веб сервера овако:

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();
}

Напомена: Код бинРеадер.РеадБитес (инт.МакВалуе) је само за демонстрацију концепта. Не користите га у производном коду, јер учитавање велике датотеке може брзо довести до ОутОфМемориЕкцептион-а. Уместо тога, требате прочитати у датотекама у дијеловима, пишући у одзив одговора у дијеловима.

Погледајте овај одговор како бисте то учинили

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


Сродна питања


Коментари (0)

Додајте коментар