PDA

View Full Version : حرفه ای: خواندن یه فایل متنی ..



javadspy++
یک شنبه 13 مرداد 1392, 20:28 عصر
سلام خدمت همگی دوستان ..

من مجبورم به صورت مداوم یک فایل متنی رو بخونم ..

اما متاسفانه مشکلی که هست فایل متنی (TXT) توسط برنامه اصلی به صورت مدارم خوانده شده

و به آن اضافه میشود .....

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

آیا راهی وجود دارد که برنامه من هم این فایل رو بخواند ؟؟؟ ...
ممنون میشم راهنمایی کنید ..

javadspy++
یک شنبه 13 مرداد 1392, 23:10 عصر
هیشکی نظری نداره .. کسی نیست کمک کنه ؟؟؟

aliagamon
یک شنبه 13 مرداد 1392, 23:18 عصر
والا من روش منطقی ای پیدا نکردم نمیتونی یه کپی از اونو به فلدر برنامت انتقال بدی و بعد اونجا باز کنی؟
اگر فایل سیستمی باشه هم میتونی با xcopy کپی بکنی:لبخند:

مهرداد صفا
دوشنبه 14 مرداد 1392, 01:43 صبح
با سلام.
شما باید فایل را در حالت shared برای Read و write باز کنید:

System.IO.FileStream stream = System.IO.File.Open(FileName, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite);

javadspy++
سه شنبه 15 مرداد 1392, 00:54 صبح
با سلام ..
من کد شما رو امنحان کردم ولی بازم همان ارور میدهد
FileStream stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);


string[] lines = File.ReadAllLines(path);




foreach (string line in lines.Skip(lines.Length - 15))
{
// Use a tab to indent each line of the file.
// Console.WriteLine('\n' + line);
richTextBox1.Text += line + "\r\n";


توی خط چهارم که میخوام تعداد خط ها رو دربیارم میگه قبلا فابل باز شده و از خط اولی ارور میده.
تو ی خط چهارم که یه آرایه که تعداد خطه رو درمیاره .. توی کد مشخصه ..

ممنون میشم کمکم کنید ......

Mahmoud.Afrad
سه شنبه 15 مرداد 1392, 01:08 صبح
منظور اینه که برنامه اصلی باید در حالت Shared خواندن نوشتن فایل رو باز کنه تا برنامه شما هم بتونه باهاش کار کنه.

sadeghjun
سه شنبه 15 مرداد 1392, 01:45 صبح
سلام
به این صورت عمل کن ببین مشکلت حل میشه
StreamReader sr = new StreamReader(Application.StartupPath + @"\ver.txt");
string text = sr.ReadToEnd();
sr.Close();

javadspy++
سه شنبه 15 مرداد 1392, 02:39 صبح
منظور اینه که برنامه اصلی باید در حالت Shared خواندن نوشتن فایل رو باز کنه تا برنامه شما هم بتونه باهاش کار کنه.

خوب بله .. من تو خط اول گذاشتم دیگه ...من باید مدام یه فایل متنی رو بخونم اما این فایل توسط یه برنامه دیگه خوانده شده و به آن اضاف میشه!! فقط این برنامه این فایل رو باز کرده و داخلش مینویسه ..
و دوستان گفتند باید در حالت share بخونی تا داخل برنامه منم بشه خوند.. چون از قبل فایل باز شده بود!!
اما وقتی به خط چهارم میرسه از خط اول خطا میگره و میگه قبلا باز شده و تعداد خط ها خوانده نمیشه و متوقف ..؟؟/

sadeghjun
سه شنبه 15 مرداد 1392, 03:41 صبح
دلیلش اینه در کد شما در انتهای read باید فایلت رو ببندی که این کار رو نمی کنی و دوباره میخوای بازش کنی!

Mahmoud.Afrad
سه شنبه 15 مرداد 1392, 04:53 صبح
FileStream stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
string[] lines = File.ReadAllLines(path);
foreach (string line in lines.Skip(lines.Length - 15))
{
// Use a tab to indent each line of the file.
// Console.WriteLine('\n' + line);
richTextBox1.Text += line + "\r\n";


الان طبق این کد از استریم هیچ استفاده ای نکردی پس برای چی تعریفش کردی؟!

به اینصورت بنویس. در ضمن اون یکی برنامه هم باید به صورت Shared فایل رو باز کنه.

StringBuilder sb = new StringBuilder();
using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
byte[] b = new byte[1024];
while (stream.Read(b, 0, b.Length) > 0)
{
sb.Append(Encoding.UTF8.GetString(b));
}
}
richTextBox1.Text = sb.ToString();