2011-11-06 124 views
0

如何將ArrayList的內容保存到文件中?我正在處理下面的代碼,但ToString()只顯示一個名稱。如何將ArrayList的內容保存到文件中?

編輯

其他的事我都忘記了提。我將數據存儲爲加密的。我唯一遇到的問題是獲取ArrayList的全部內容並將其傳遞給加密方法。假人

實施例推薦的。

SAVEFILE()方法

private void SaveFile() 
{ 
    sfdSaveFile.FileName = storedAuth.UserName; 
    sfdSaveFile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    sfdSaveFile.RestoreDirectory = true; 
    sfdSaveFile.Filter = "AES Binary Files (*.abf)|*.sbf|All files (*.*)|*.*"; 
    sfdSaveFile.DefaultExt = ".abf"; 
    sfdSaveFile.FilterIndex = 1; 

    sfdSaveFile.ShowDialog(); 
} 

保存文件對話框

private void sfdSaveToLocation_FileOk(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    EncryptDecrypt en = new EncryptDecrypt(); 
    AddEntryWindow addWindow = new AddEntryWindow 
       (this, storedAuth.UserName, storedAuth.Password); 


    // how to save it appropriately? 
    string encrypted = en.Encrypt(addWindow.addedEntry.ToString(), 
     storedAuth.UserName, storedAuth.Password); 

    File.WriteAllText(sfdSaveFile.FileName, encrypted); 
} 
+3

你想看看系列化http://msdn.microsoft.com/en-us/library/ms233843.aspx – Loman

+0

是addWindow.addedEntry是ArrayList的你在說什麼?是的,那麼你將不得不枚舉集合,而不是直接在ArrayList上調用ToString()方法。 –

回答

1

使用序列化可以很好的主意這個方法將數組轉換爲字符串(數組元素的類型應該是serialiazable)

public string arrayToString(System.Collections.ArrayList ar) 
{ 
    StringBuilder sb = new StringBuilder(); 
    System.Xml.XmlWriterSettings st = new System.Xml.XmlWriterSettings(); 
    st.OmitXmlDeclaration = true; 
    st.Indent = false; 
    System.Xml.XmlWriter w = System.Xml.XmlWriter.Create(sb, st); 
    System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(ar.GetType()); 
    s.Serialize(w, ar); 
    w.Close(); 
    return sb.ToString();   
} 

public static void SaveArraytoFile(System.Collections.ArrayList ar, string fileName) 
{ 
    using (System.IO.StreamWriter sw = new StreamWriter(fileName)) 
    { 
     foreach (var item in ar) 
     { 
      sw.WriteLine(item); 
     } 
    } 
} 
+0

看起來很有趣。當我有機會時,我會看看它。謝謝。 – HelpNeeder

+0

我編輯和方法和刪除var ns = new System.Xml.Serialization.XmlSerializerNamespaces(); ns.Add(「」,「AC」); – DeveloperX

+1

'XmlWriter'是'IDisposable'所以你應該是'using'它 - 不會讓你的榜樣任何區別,但它是一個很好的習慣進入(恕我直言) – ChrisWue

相關問題