PDA

View Full Version : خواندن یک رشته از فایل و مجزا کردنش



A.Michael
یک شنبه 08 فروردین 1389, 17:16 عصر
سلام
راستش من گیر کردم بد جور گفتم بیام از شما اساتید راهنمایی بگیرم
من تو برنامه یک سری اطلاعات دانشجویی را از فورم گرفتم و درون فایل تکس به صورت یک رکورد نوشتم مانند اسم - فامیلی - شماره دانشجویی بعد واسه اینکه بدانم کجا اسم تمام شده آخر اسم یا آخر همان هر فیلد یک * گذاشتم و آخر رکورد یک # گذاشتم تکس فایل من به صورت زیر در آمده :




87120634 *Ali*Javanian*(976) 890-0348*Computer Scienc*Full Time*3#87619083*Morteza*Ghanbari*(234) 681-0987*Art and Design*Part Time*5


حالا برنامه من باید بتواند هر رکورد را بخواند و در هر رکورد هر فیلد را جدا کند و اطلاعات را نمایش دهد و مثلا یک نفر را جستجو کند و اطلاعات آنرا نمایش دهد
حالا من چطوری میتوانم این کار را بکنم
من فایل تکس را با استفاده از این دستور درست کردم




File.AppendAllText(path, Tempinfo);



از انجایی که این تکس فایل مثلا هارد دیسک هست من نمیتونم هر رکورد را در یک خط بنویسم
و بایدپشت سر هم بنویسم ...

اگر از


File.ReadAllText(path)
استفاده کنم همه را باهم میخواند نه فقط یک رکورد را
لطفا راهنمایی کنید من خودم به هیچ نتیجه ای تاحالا نرسیدم:عصبانی++::عصبانی++: :عصبانی++: از چه دستوراتی میتونم استفاده کنم ؟؟؟
سپاس فراوان

xcomlock
یک شنبه 08 فروردین 1389, 18:32 عصر
سلام دوست عزیز.
تمام فایل تکس رو بخون و درون یه متغیر string ذخیره کن .برای جدا کردن کاراکتر ها از این کد استفاده کن


string text1,text2;
text1 = "Ali*Javanian*(976) 890-0348*Computer Scienc*Full Time*3#87619083*Morteza*Ghanbari*(234) 681-0987*Art and Design*Part Time*5";
text2 = text1.Split(Convert.ToChar("#");

این کد رکورد ها رو جدا میکنه برای جدا کردن تمامی رکوردها از ArrayList استفاده کن.بهمین ترتیب الی آخر...

موفق باشید.

sds1920
یک شنبه 08 فروردین 1389, 20:06 عصر
دوستمون xcomlock درست گفت ولی یه کم کدها اشتباه داشت که من درستش می کنم.

این کد برای جداکردن رکوردهاست :


string[] text1;
string text2;
text1 = "Ali*Javanian*(976) 890-0348*Computer Scienc*Full Time*3#87619083*Morteza*Ghanbari*(234) 681-0987*Art and Design*Part Time*5";
text2 = text1.Split(Convert.ToChar("#");


این کد هم برای جدا کردن فیلدها البته بعد از جدا کردن رکوردها :


string[] fields;
fields = text2[i].Split(Convert.ToChar("*"));

FastCode
دوشنبه 09 فروردین 1389, 00:20 صبح
من نمیفهمم که چرا یه نفر باید از
Convert.ToChar("*") استفاده کنه.
دوستانی که میفهمن لطفا" توضیح بدن که کم کردن performance برنامه و افزایش حجم اون برای چیه؟

exlord
دوشنبه 09 فروردین 1389, 10:13 صبح
چرا داده هاتو تو فایل xml نمینویسی که هم نوشتنش راحتتره و هم خوندنش........

mn_zandy63
دوشنبه 09 فروردین 1389, 12:35 عصر
سلام دوست من، همونطور که دوستان توضیح دادند، با کد زیر میتونی به تک تک رکورد ها و سلولهای هر رکورد دسترسی پیدا کنی:

string text =
"87120634 *Ali*Javanian*(976) 890-0348*Computer Scienc*Full Time*3#87619083*Morteza*Ghanbari*(234) 681-0987*Art and Design*Part Time*5";
string[] records = text.Split('#');

string[] cells = records[5].Split('*');
string cell = cells[1];


البته نیازی به Convert.ToCharCode("#") نیست وقتی میتونی بنویسی '#'. :چشمک:

حتما دلایلی داری که به این شکل نوشتی، اما اگه اطلاعاتی که ذخیره میکنی زیاد باشه، داری از بدترین روش ذخیره سازی داده برای داده های زیاد استفاده میکنی.

اگه با دیتابیس ها کار نکردی حتما برو سمتشون.
اگه کار با دیتابیس ها رو بلدی اما به دلیل مثلا کوچکی کار نرفتی سمت پایگاه های بزرگی مثل SQL، میتونی از Access یا SQLLite و ... استفاده کنی که دردسر کمی هم دارند.

موفق باشی.