PDA

View Full Version : سوال: چگونه arraylist ها را در فايل بنويسم؟



ramin_280
پنج شنبه 12 شهریور 1388, 18:19 عصر
با سلام خدمت دوستان من در مورد نوشتن arraylist ها در فايل مشكل دارم در C#‎‎‎ 2008 اگه ممكنه كمكم كنيد



FileStream Fs = new FileStream();
WriteStream WS = new WriteStream(FS);
ArrayList MyArr=new ArrayList();
MyArr.add("ASD");
WS.Write(MyArr);

اينجا با خطا مواجه ميشوم كه MyArr قابل نوشتن نيست!!!

Beyondsoft
پنج شنبه 12 شهریور 1388, 20:00 عصر
شما باید مقادیر arrayList را بخوانی و سپس در فایل بنویسی. نه اینکه تمام arrayList را داخل streamWriter بگذاری.

streamWriter یک string می پذیرد.

مهدی کرامتی
پنج شنبه 12 شهریور 1388, 20:49 عصر
اگر با Serialization آشنا باشی می توانی با استفاده از آن کل ArrayList را یک جا در یک فایل بنویسی و بعدا دوباره فایل را بخوانی و به ArrayList تبدیل کنی.

solidilos
پنج شنبه 12 شهریور 1388, 22:33 عصر
اینم یه سورس ساده برای اینکار...


using System;
using System.Collections;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

public class App
{
[STAThread]
static void Main()
{
Serialize();
Deserialize();
}

static void Serialize()
{
ArrayList array = new ArrayList();
array.Add(1);
array.Add(2);
array.Add(3);

FileStream fs = new FileStream("DataFile.dat", FileMode.Create);

BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, array);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
}


static void Deserialize()
{
ArrayList array = null;

FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();

array = (ArrayList)formatter.Deserialize(fs);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}

foreach (object o in array)
{
Console.WriteLine("{0}", o.ToString());
}
}
}

ArenaSmi
جمعه 13 شهریور 1388, 07:26 صبح
سلام چرا در قسمت برنامه نويسي در ‍C# كدها يي كه براي دانلود گذاشته شده به زبان PHP نوشته شده؟

mahdi_7610
جمعه 13 شهریور 1388, 08:53 صبح
سلام چرا در قسمت برنامه نويسي در ‍C#‎‎ كدها يي كه براي دانلود گذاشته شده به زبان PHP نوشته شده؟
به صورت PHP نوشته نشده بلکه داخل تگ php گذاشته شده .

علیرضا مداح
جمعه 13 شهریور 1388, 09:35 صبح
سلام دوست عزیز،
همچنین می توانید ArrayList مورد نظر را Xml Serialize نمایید،
به مثال ساده زیر توجه کنید:

//For purpose of demonstration
void Serialize(ArrayList arr, string path)
{
XmlTextWriter xmlTextWriter = new XmlTextWriter(path, Encoding.UTF8);
try
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ArrayList));
xmlSerializer.Serialize(xmlTextWriter, arr);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
xmlTextWriter.Close();
}
}
ArrayList Deserialize(string path)
{
XmlTextReader xmlTextReader = new XmlTextReader(path);
ArrayList result = null;
try
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ArrayList));
result = (ArrayList)xmlSerializer.Deserialize(xmlTextReader );
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
xmlTextReader.Close();
}
return result;
}

پیشنهاد می کنم در صورت امکان به جای ArrayList از Generic List استفاده نمایید،
اگر نوع داده ای که قصد ذخیره آن را دارید، ذکر کنید می توان راه حل مناسب را پیشنهاد داد،/
،/

ramin_280
چهارشنبه 18 شهریور 1388, 19:02 عصر
نوع داده من يك struct است كه مي خواهم دريك Arraylist قراردهم.

public struct PersonalInfo
{
public string name;
public string Family;
public int ID;
}

Soroush.Sarabi
پنج شنبه 19 شهریور 1388, 10:38 صبح
نوع داده من يك struct است كه مي خواهم دريك Arraylist قراردهم.

public struct PersonalInfo
{
public string name;
public string Family;
public int ID;

}


منظورتون این هست که می خواهید آرایه ای از Stuct داشته باشید؟

در ضمن پیشنهاد Serialize بهترین راه است.



(http://www.soroush-sarabi.com)

ramin_280
جمعه 20 شهریور 1388, 17:03 عصر
بله ميخواهم آرايه اي از يك استراكچر داشته باشم كه آنرا در فايل بنويسم. اصلا كلا ميتوانيد يك راهنمايي كامل در مورد كار با فايل در c#2008 بدهيد.ممنون ميشم.

saed2006
سه شنبه 26 آبان 1388, 17:32 عصر
من اینا رو نوشتم اما این خطا
Assembly 'WindowsFormsApplication6, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable
رو میده