C# 在文件中写入和读取arraylist对象

C# 在文件中写入和读取arraylist对象,c#,collections,C#,Collections,这很简单,我知道,但我没有互联网接入,这个网吧键盘很烂,所以如果有人能回答这个问题,请 什么课?只要朝正确的方向踢我一脚。有一个简单的arraylist对象,我想在文件中写入和读取。 谢谢这个问题没有一个明确的答案。这取决于文件的格式和列表中的对象。你需要一个序列化程序。例如,您可以使用它将对象实例序列化为二进制文件,但您的对象必须是。另一个选项是使用XML格式的 更新: 下面是BinaryFormatter的一个示例: class Program { static void Main

这很简单,我知道,但我没有互联网接入,这个网吧键盘很烂,所以如果有人能回答这个问题,请

什么课?只要朝正确的方向踢我一脚。有一个简单的arraylist对象,我想在文件中写入和读取。
谢谢

这个问题没有一个明确的答案。这取决于文件的格式和列表中的对象。你需要一个序列化程序。例如,您可以使用它将对象实例序列化为二进制文件,但您的对象必须是。另一个选项是使用XML格式的


更新:

下面是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);
        }
    }
}

因为您没有提到这个数组包含什么类型的数据,所以我建议以二进制格式编写该文件

基本上,您需要使用
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();
    }
private static void write()
{
列表=新列表();
列表。添加(“ab”);
列表。添加(“db”);
Stream=新文件流(“D:\\Bar.dat”,FileMode.Create);
BinaryWriter binWriter=新的BinaryWriter(流);
binWriter.Write(list.Count);
foreach(字符串_列表中的字符串)
{
binWriter.Write(_字符串);
}
binWriter.Close();
stream.Close();
}
私有静态void read()
{
列表=新列表();
Stream=新文件流(“D:\\Bar.dat”,FileMode.Open);
BinaryReader=新的BinaryReader(流);
int pos=0;
int length=binReader.ReadInt32();
while(pos
如果arraylist中的对象可序列化,则可以选择二进制序列化。但这意味着任何其他应用程序都需要知道序列化,然后才能使用此文件。您可能希望澄清使用序列化的意图。所以问题仍然是,为什么需要进行序列化?如果它很简单,对于您自己(这个应用程序)的使用,您可以考虑二进制序列化。请确保,您的对象是可序列化的。否则,您需要考虑XML序列化

对于二进制序列化,可以考虑以下代码:

Stream stream = File.Open("C:\\mySerializedData.Net", FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, myArray);
stream.Close();

我不确定,但据我记忆所及,binarywriter的write方法不写collections对象,只写基元类型。那么它是不是真的?你以前用过那些课程吗?看我编辑的答案。我认为他也给出了一个很好的答案。您现在可能应该研究BinaryFormatter类。