запись и чтение объекта массива в файл и из файла - PullRequest
3 голосов
/ 17 апреля 2010

это просто, я знаю, но у меня нет доступа в интернет, и эта клавиатура netcafes отстой, поэтому, если кто-то может ответить на этот вопрос, пожалуйста.

какой будет класс? просто дай мне удар в правильном направлении. есть простой объект массива, который я хочу записать и прочитать в / из файла. спасибо

Ответы [ 3 ]

4 голосов
/ 17 апреля 2010

Нет однозначного ответа на этот вопрос. Это будет зависеть от формата файла и объектов в списке. Вам нужен сериализатор. Например, вы можете использовать BinaryFormatter , который сериализует экземпляр объекта в двоичный файл, но ваши объекты должны быть serializable . Другой вариант - XmlSerializer , который использует формат XML.


UPDATE:

Вот пример с BinaryFormatter:

class Program
{
    static void Main()
    {
        var list = new ArrayList();
        list.Add("item1");
        list.Add("item2");

        // Serialize the list to a file
        var serializer = new BinaryFormatter();
        using (var stream = File.OpenWrite("test.dat"))
        {
            serializer.Serialize(stream, list);
        }

        // Deserialize the list from a file
        using (var stream = File.OpenRead("test.dat"))
        {
            list = (ArrayList)serializer.Deserialize(stream);
        }
    }
}
1 голос
/ 17 апреля 2010

Поскольку вы не указали, какой тип данных содержит этот массив, я бы предложил записать файл в двоичном формате.

Вот хорошее руководство по чтению и записи в двоичном формате.

В основном вам нужно использовать BinaryReader и BinaryWriter классы.

[Изменено]

    private static void write()
    {
        List<string> list = new List<string>();
        list.Add("ab");
        list.Add("db");
        Stream stream = new FileStream("D:\\Bar.dat", FileMode.Create);
        BinaryWriter binWriter = new BinaryWriter(stream);
        binWriter.Write(list.Count);
        foreach (string _string in list)
        {
            binWriter.Write(_string);
        }
        binWriter.Close();
        stream.Close();
    }

    private static void read()
    {
        List<string> list = new List<string>();
        Stream stream = new FileStream("D:\\Bar.dat", FileMode.Open);
        BinaryReader binReader = new BinaryReader(stream);

        int pos = 0;
        int length = binReader.ReadInt32();
        while (pos < length)
        {
            list.Add(binReader.ReadString());
            pos ++;
        }
        binReader.Close();
        stream.Close();
    }
0 голосов
/ 17 апреля 2010

Если ваши объекты в массиве являются сериализуемыми, вы можете выбрать двоичную сериализацию.Но это означает, что любое другое приложение должно знать сериализацию и только тогда может использовать эти файлы.Вы можете уточнить ваше намерение использовать сериализацию.Таким образом, остается вопрос: зачем вам делать сериализацию?Если это просто, для вашего собственного (этого приложения) использования, вы можете подумать о двоичной сериализации.Будьте уверены, ваши объекты сериализуемы.В противном случае вам нужно подумать о сериализации XML.

Для двоичной сериализации вы можете подумать о некотором коде, подобном этому:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...