2012-07-09 90 views
1

我需要用C#編寫一個「對象」到一個文件,但到目前爲止我所有的嘗試都無法工作。問題是我想要寫入的對象實際上是object,因爲它是從Outlook電子郵件的對象的Attachments集合中返回的。如何在C#中將對象寫入二進制文件?

我已經設法將其插入到SQL Server數據庫中,從中檢索併成功創建了正確的文件,但這不是唯一的方法。

我也使用BinaryFormatter嘗試如下圖所示,但總是在一開始加入一些不需要的字符會破壞我的文件頭(剩餘的數據似乎可以):

[...] 
using (FileStream fileStream = new FileStream(tempName, FileMode.Create)) 
{ 
    using (BinaryWriter binaryWriter = new BinaryWriter(fileStream)) 
    { 
     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      object attachmentData =          
       attachment.PropertyAccessor.GetProperty(PR_ATTACH_DATA_BIN); 
      BinaryFormatter binaryFormatter = 
       new BinaryFormatter(); 
      binaryFormatter.Serialize(memoryStream, attachmentData); 
      memoryStream.Seek(0, SeekOrigin.Begin); 
      binaryWriter.Write(memoryStream.ToArray()); 
     } 
    } 
} 
[...] 

任何想法?我無法控制我從Outlook獲得,因此通常的做法系列化似乎沒有什麼,我需要在這裏...

回答

5

我認爲這是你在找什麼:

How to: Save attachments from outlook

if (newEmail.Attachments.Count > 0) 
{ 
     for (int i = 1; i <= newEmail.Attachments.Count; i++) 
     { 
      newEmail.Attachments[i].SaveAsFile 
       (@"C:\TestFileSave\" + 
       newEmail.Attachments[i].FileName); 
     } 
} 
+0

噢,我的上帝,一個人怎麼會失明......這正是我所需要的,只是嘗試過而且能夠發揮作用。謝謝! – Gorgsenegger 2012-07-09 08:19:08

+0

另請注意,您不要在此處寫入對象,而是寫入對象的內容。你的信號測試指向serializaton,它不會導致內容(僅)。 – TomTom 2012-07-09 08:38:16