سلام
چطوری میشه هر چی که توی یک ArrayList هستش رو توی یک فایل txt ریخت و دوباره از روش خواند:9:
Printable View
سلام
چطوری میشه هر چی که توی یک ArrayList هستش رو توی یک فایل txt ریخت و دوباره از روش خواند:9:
این مثال رو نگاه کن:
این مثال 10 تا اعداد تصادفی 1 تا 10 تولید می کنه و اونا رو توی یه ArrayList می ریزه. بعدش هم می ریزش توی فایل. توی مرحله بعد هم فایل رو می خونه و می ریزه توی یه ArrayList.کد:using System;
using System.Xml.Serialization;
using System.IO;
using System.Collections;
using System.Threading;
namespace SerializationExample
{
public class Test
{
private const string FILE = "store.dat";
private static XmlSerializer ser
= new XmlSerializer(typeof(ArrayList), new Type[] {typeof(int)});
private static void serialize()
{
ArrayList list = new ArrayList();
// We will create a random number of objects
Random rand = new Random();
for(int i = 0; i < 10; i++)
{
list.Add(rand.Next(10));
}
using (FileStream strm = new FileStream(FILE, FileMode.Create, FileAccess.Write))
{
ser.Serialize(strm, list);
}
}
private static void deserialize()
{
using(FileStream strm = new FileStream(FILE, FileMode.Open, FileAccess.Read))
{
ArrayList list = ser.Deserialize(strm) as ArrayList;
}
foreach(Object o in list)
{
Console.WriteLine(o.ToString());
}
}
[STAThread]
static void Main( string[] args)
{
Console.WriteLine("We will first serialize, then we will deserialize");
Console.WriteLine("Starting to Serialize");
serialize();
Thread.Sleep(1000);
Console.WriteLine("Starting to deserialize");
deserialize();
}
} // end of class
} // end of namespace
البته توی notepad نوشتم و ممکنه اشکالات کوچیکی داشته باشه ولی اصل کار همینه. در ضمن اگر می خواهی عناصر arraylist به جای int یه کلاس دلخواه باشند باید کلاس رو به صورت serializable تعریف کنی و متد ToString رو Overload کنی:
کد:[Serializable]
public class X
{
private DateTime time = DateTime.Now;
public override string ToString()
{
return GetType().Name + ":" + time.ToLongTimeString();
}
}