2011-11-06 4 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

파일 시리얼 화 가능)

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'이므로'use'해야합니다 - 예제에서는 아무런 변화가 없지만 (imho) 들어가는 것이 좋은 습관입니다. – ChrisWue

관련 문제