2013-11-25 81 views
0

我有代碼應該從數據庫中讀取二進制值並將其轉換爲zip文件。它只創建一個大小爲43kb的文件,不能提取。我錯過了什麼?如何寫二進制文件

com = new SqlCommand("SELECT BinFile FROM tbl_reports WHERE DBKey=411", conString);  
byte[] blob = (byte[])com.ExecuteScalar(); 
File.WriteAllBytes("C:\\" + "test.zip", blob); 
+0

你寫過的二進制數據轉換文本文件和確保,它是你想要的數據? – Marco

+0

是的一切都在數據庫中。我只需要將它們保存爲可用文件。有不同的類型,從zip,jpg,xsl等 – user2772209

回答

0

使用DotNetZip,這裏是示例。

using (ZipFile zip = new ZipFile()) 
    { 
     zip.Password = pwd; 
     zip.AddFile(saveFileDialog1.FileName + ".xml"); 
     zip.Save(saveFileDialog1.FileName + ".zip"); 
    } 

此外,我認爲你需要將byte[]轉換爲字符串,然後文本文件。
您可以使用convert.frombase64string方法!

編輯

如果你想寫byte[]到文件,使用此功能,

public bool ByteArrayToFile(string _FileName, byte[] _ByteArray) 
    { 
     try 
     { 
     System.IO.FileStream _FileStream = 
    new System.IO.FileStream(_FileName, System.IO.FileMode.Create, 
           System.IO.FileAccess.Write); 
    _FileStream.Write(_ByteArray, 0, _ByteArray.Length); 
    _FileStream.Close(); 

    return true; 
     } 
    catch (Exception _Exception) 
     { 
    Console.WriteLine("Exception caught in process: {0}", 
        _Exception.ToString()); 
     } 
    return false; 
    } 

而調用這個函數喜歡

com = new SqlCommand("SELECT BinFile FROM tbl_reports WHERE DBKey=411", conString);  
byte[] blob = (byte[])com.ExecuteScalar(); 
ByteArrayToFile("C:\\test.txt",blob); 
+0

我不想壓縮文件,我只需要從數據庫中讀取文件。不一定是zip,任何文件類型。 – user2772209

+0

你說「將其轉換成zip文件」!那麼,這是什麼意思? – zey

+0

請原諒我的'英語'。我只需要從數據庫中讀取一個文件並保存。 – user2772209