Как сохранить содержимое ArrayList в файл? - PullRequest
0 голосов
/ 06 ноября 2011

Как сохранить содержимое ArrayList в файл? Я работаю со следующим кодом, но ToString () отображает только имя.

Редактировать

Другая вещь, которую я забыл упомянуть. Я храню данные в зашифрованном виде. Единственное, с чем у меня проблемы, это получить весь контент 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);
}

1 Ответ

1 голос
/ 06 ноября 2011

Использование Serialization может быть хорошей идеей, если этот метод преобразует массив в строку (тип элемента массива должен быть 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);
        }
    }
}
...