PDA

View Full Version : تغییر مسیر ذخیره سازی streamwriter



takgig
دوشنبه 27 آبان 1392, 08:27 صبح
سلام

من برنامه ای نوشتم که با یک folderbrowser مسیر فایلام رو میدم و بعد لیست فایلای داخل پوشه رو در میارم و بعد داخل تک تک فایلا دنبال یک رشته می گردم و در یک فایل متنی جداگانه که اسمش رو باز از روی یک جستجو در زیررشته ها بدست میارم ذخیره می کنم .
این قسمت ذخیره سازی هست

using (StreamWriter sw = new StreamWriter(folderBrowserDialog1.SelectedPath + "\\" + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + ".prn"))
{
foreach (String file in files)
{
foreach (string line in File.ReadLines(file))
{
if (line.Substring(42, 4) == "9893" && line.Substring(42, 4) != "98932")
{
sw.WriteLine(line);

}
}
}


با این روش سرعت جستجو و ذخیره بالاست . و لی می خواستم یک شرط بذارم اگر برقرار بود مسیر streamwriter رو عوض کنم که از این به بعد در یک فایل دیگه ذخیره کنم بدون خارج شدن از حلقه.
البته می شه streamwriter رو داخل foreach بذارم ولی سرعت میاد پایین چون به ازای هر line در هر file یکبار فایل بارگذاری می شه که سرعت رو میاره پایین .
چکار کنم برای این مشکل؟

rahnema1
دوشنبه 27 آبان 1392, 16:01 عصر
StreamWriter sw = new StreamWriter(folderBrowserDialog1.SelectedPath + "\\" + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + ".prn");
foreach (String file in files)
{
if (condition) {
sw.Close();
sw.Dispose();
sw = new StreamWriter("....");
}
foreach (string line in File.ReadLines(file))
{
if (line.Substring(42, 4) == "9893" && line.Substring(42, 4) != "98932")
{
sw.WriteLine(line);
}
}
}
sw.Close();
sw.Dispose();