这很简单我知道,但我没有互联网访问和netcafes键盘糟透了,所以如果有人可以回答这个问题,请。写入和读取文件中的ArrayList对象
这是什么课程?给我一个正确的方向。有一个简单的ArrayList对象,我想写入和从文件读取。 谢谢
这很简单我知道,但我没有互联网访问和netcafes键盘糟透了,所以如果有人可以回答这个问题,请。写入和读取文件中的ArrayList对象
这是什么课程?给我一个正确的方向。有一个简单的ArrayList对象,我想写入和从文件读取。 谢谢
这个问题没有单一的明确答案。这取决于文件的格式和列表中的对象。你需要一个序列化器。例如,您可以使用BinaryFormatter将对象实例序列化为二进制文件,但对象必须是serializable。另一种选择是使用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);
}
}
}
因为你没有提到这个数组包含什么类型的数据,我建议写在二进制格式的文件。
Here is a good tutorial on how to read and write in binary format.
基本上,你需要使用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();
}
我不确定,但是从我记得的东西中,binarywriter的write方法不写集合对象,只有原始类型。所以没有使用脯氨酸 – user257412 2010-04-17 10:15:07
真的吗?你以前用过这些课吗?看到我编辑的答案。 – Nayan 2010-04-17 10:18:27
如果ArrayList中的对象序列化,你可以选择二进制序列化。但这意味着任何其他应用程序都需要知道序列化,然后才能使用这些文件。您可能想澄清您使用序列化的意图。所以问题仍然存在,为什么你需要做一个序列化?如果它很简单,为了你自己(这个应用程序的)使用,你可以考虑二进制序列化。可以肯定,你的对象是可序列化的。否则,您需要考虑XML序列化。
二进制序列化,你能想到的一些像这样的代码:
Stream stream = File.Open("C:\\mySerializedData.Net", FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, myArray);
stream.Close();
我得到了几个可以接受的答案,谢谢大家 – user257412 2010-04-18 07:28:54
我想他也给了一个很好的答案。你现在应该可以研究BinaryFormatter类。 – Nayan 2010-04-17 10:17:30