C#语言,从数据库中读取出来的数据如何以二进制的形式存入文件当中,存好后这个文件用记事本打开是乱码(二进制)的形式。

解决方案 »

  1.   

    当然是乱码了,你保存的又不是文档内容,而是二进制,也许txt根本识别不了文件格式,如果保存的是txt文本的二进制,那么读出来后,要转为字符串,或者存为txt文档打开
      

  2.   

     byte[] bytData = ...; //从数据库二进制字段中读取的数据
                string strData = System.Text.Encoding.Default.GetString(bytData); //注意编码格式要一致
                System.IO.StreamWriter sw = new System.IO.StreamWriter("c:\a.txt",false,System.Text.Encoding.Default);
                sw.WriteLine(strData);
                sw.Close();
      

  3.   

    string fileName = "MyNew.data";
                if (File.Exists(fileName))
                {
                    MessageBox.Show("当前文件已经存在");
                }
                else
                {
                    FileStream fs = new FileStream(fileName, FileMode.Create);
                    BinaryWriter writer = new BinaryWriter(fs);
                    writer.Write(textBox1.Text);
                    for (int i = 0; i < 300; i++)
                    {
                        writer.Write(10 + i);
                    }
                    MessageBox.Show("写入文件成功");
                    textBox1.Text = "";
                    writer.Close();
                    fs.Close();
                }你可以参考一下,这个就是二进制
      

  4.   

    我现在就想打开文件的时候是乱码,可是每次用binarywrite这个类进行写入的时候,打开还是文本格式的,没有达到二进制乱码的效果
      

  5.   


    如果数据库中直接就是二进制数据,直接写到文件就可以了
    File.WriteAllBytes
      

  6.   

    主要是要指定编码的。。
    DataSet result = .....//你的查询结果
    using(FileStream destinationStream = new FileStream(@"C:\a.txt", FileMode.Create, FileAccess.Write)){
        try{
            new BinaryFormatter().Serialize(destinationStream, result);
        }
        catch(Exception ex){throw ex;}
        finally{destinationStream.Close();}
    }
      

  7.   

    这个主要是用DataSet序列化来做的。
      

  8.   

    如果数据库中存的是文本,就加密下,或者转换下 再保存。简单的转换可以用Base64编码,Convert.ToBase64String() 虽然还是文本,但是没法读了。