将.db转换为二进制

时间:2012-08-07 16:50:40

标签: c#

我试图将.db文件转换为二进制文件,以便我可以在Web服务器上传输它。我对C#很陌生。我已经在线查看代码片段,但我不确定下面的代码是否让我走上了正确的轨道。我读完后如何编写数据? 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;
}

当我打电话给我的服务器时,我什么都没收到。当我对图像/ .png的内容类型使用相同类型的方法时,它可以正常工作。

1 个答案:

答案 0 :(得分:2)

您发布的所有代码实际上都是将文件 input.db 复制到文件 output.bin 。您可以使用File.Copy完成相同的操作。

BinaryReader将只读取文件的所有字节。将字节流式传输到需要二进制数据的输出流是一个合适的开始。

获得与您的文件对应的字节后,您可以将它们写入Web服务器的响应,如下所示:

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

注意:代码 binReader.ReadBytes(int.MaxValue)仅用于演示概念。不要在生产代码中使用它,因为加载大文件很快就会导致OutOfMemoryException。相反,您应该以块的形式读取文件,以块的形式写入响应流。

有关如何操作的指导,请参阅此答案

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