PDA

View Full Version : جستجو در فایل txt



s.Jabbari
شنبه 10 بهمن 1388, 13:25 عصر
من یک فایل txt دارم.میخوام توش جستجو کنم و سطری رو که ali داشته باشه برگردونه.
میشه یا نه؟؟

s.Jabbari
شنبه 10 بهمن 1388, 21:04 عصر
جستجو رو خودم ردیف کردم
کسی میدونه چطوری میشه یک سطر از فایل متنی رو پاک کرد؟؟؟

Salar Ashgi
شنبه 10 بهمن 1388, 22:38 عصر
سیستم فایلینگ مثل سیستم پایگاه داده ای نیست که شما هر رکوردی که خواستید حذف کنید ،

عموما ما تو فایل دسترسی ترتیبی داریم و نه تصادفی !

کارشدنیه ، ولی زیاد بهینه نیست !

مثل فایل رو با دستور File.Delete حذف کرده و تمام اطلاعات به جز اطلاعات مورد نظر رو در فایل write

کنید .

موفق باشید .

Netsky
یک شنبه 11 بهمن 1388, 00:35 صبح
جستجو رو خودم ردیف کردم

سلام .
دوست عزیز اگه راه حلش رو پیدا کردی واسه ما هم بزار .
شاید سوال خیلی ها باشه . یکیش خود من !!!

Yasersadegh
یک شنبه 11 بهمن 1388, 09:07 صبح
سلام خدمت همه دوستان

جستجو رو خودم ردیف کردم
کسی میدونه چطوری میشه یک سطر از فایل متنی رو پاک کرد؟؟؟
دوست عزیز همونطور که استاد گرامی salar_cpp_cs فرمودند کار با سیستم فایلینگ به راحتی کار با پایگاه داده نیست!! برایه حذف یک سری داده از فایل راه هایی هر چند غیر بهینه و سخت وجود دارد که بستگی به داده های موجود در فایل دارد!!
یکی از راه ها روشی است که استاد گرامی salar_cpp_cs اشاره کردند!! که این روش تقریبا برایه همه نوع داده ای جواب میده ولی سرعت رو پایین میاره و بهینه نیست! به این روش حذف فیزیکی گفته می شود!
اما اگه در فایل هر سطر از داده ها مشخص است و می خواهید سطر به سطر حذف کنید می تونید یه بیت فلگ1 (0یا1) در ابتدای هر سطر قرار بدید و هر سطری که حذف شد آن بیت را 0 کنید. موقع نمایش یا جستجو هم سطرهایی که با 1 شروع میشوند را در نظر بگیرید! هنگام اضافه کردن سطر جدید هم بر روی سطرهایی که 0 هستند بنویسید!! یعنی در واقع از حذف منطقی استفاده کنید!!

موفق باشید:چشمک:

s.Jabbari
یک شنبه 11 بهمن 1388, 15:07 عصر
این کد فقط یک سطر رو برمی گردونه.یعنی اولین سطری که حاوی متن مورد نظر ماست.
کسی میتونه این رو یه جوری تغییر بده که همه ی سطر های مورد نظر رو برگردونه؟




fs = new FileStream(@"c:\jabbari.txt", FileMode.Open, FileAccess.ReadWrite);
StreamReader s = new StreamReader(fs);

string currentLine;
string searchString = searchtext.Text;
bool foundText = false;
string tr="";

do
{
currentLine = s.ReadLine();
if (currentLine != null)
{
foundText = currentLine.Contains(searchString);
tr = currentLine;
}
}
while (currentLine != null && !foundText);

if (foundText)
{
ttarget.Text = tr;
}


else
MessageBox.Show("Not find "+ searchtext.Text,"Error");

s.Close();
fs.Close();

aminh85
یک شنبه 11 بهمن 1388, 15:19 عصر
من با این کد جواب گرفتم!


string Names = newstring[100];
string Datas = newstring[100];
string myflag = newstring[100];
StreamReader sr = newStreamReader("d:\\names.dat");
while (!sr.EndOfStream)
{
//txt.Text = sr.ReadToEnd();
Names[i] = sr.ReadLine();
if (Names[i]=="ali")
MessageBox.Show("ok");
txt.Text = txt.Text + Names[i];
Datas[i] = sr.ReadLine();
txtd.Text = txtd.Text + Datas[i];
i++;
}
sr.Close();