PDA

View Full Version : راهنمایی در مورد خواندن اطلاعات از فایل تکس درون خود برنامه



IMANAZADI
چهارشنبه 04 اسفند 1389, 14:33 عصر
با سلام خدمت دوستان عزیز
یک سوال ساده دارم
من یک برنامه نوشتم که با کمک استریم ریدر یک فایل txt را میخونه
برنامه به اینصورت است که پس از اجرا شدن یک open file dialog باز میشه و درخواست یک فایل txt میکنه بعد اون فایل را در یک richtext box می نویسد
حالا میخوام ببینم چطوری میشه فایل txt مورد نظر را در خود برنامه جا بدم بطوری که دیگه openfile dialog باز نشه و آدرس فایل درون برنامه رو بدم
چیز دیگه اینکه میخوام موقعه کامپایل شدن فایل txt کنار فایل اجرایی برنامه نباشه که کاربر بتونه داخل محتوای اونو دستکاری یا اینکه بخونه ؟
اصلا فایل فقط داخل خود برنامه باشه ؟ جای دیگه ذخیره نشه ؟
پیشنهاد دوستان برای حل این مسئله چیه ؟؟؟
راه حل هایی غیر از تغییر پسوند txt و ذخیره xlm باشه چون راحت میشه دسترسی پیدا کرد .



private void Form1_Load (object sender , EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog ();
if (dialog.ShowDialog () == DialogResult.OK)
{
StreamReader sr = new StreamReader (dialog.FileName);

richTextBox1.Text = sr.ReadToEnd ();
}
}

mehranmsba
چهارشنبه 04 اسفند 1389, 15:59 عصر
شما در این بخش کافیه که به جای dialog.FileName آدرس فایل خود را قرار بدهید:

StreamReader sr = new StreamReader (dialog.FileName);

StreamReader sr = new StreamReader (@"c:\test.txt");

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

اگر غیر اینه می تونی فایل هات رو رمز گذاری کنی:

System.Security.Cryptography
تا اگه یکی خاص بخونه نتونه!!!!!

در ضمن می تونی فایلت رو Resource کنی و بعد با ریسورس منیجمنت بهش دسترسی پیدا کنی.(من تاحالا این رو امتحان نکردم ولی میشه)

IMANAZADI
چهارشنبه 04 اسفند 1389, 19:26 عصر
دوست عزیز مرسی از راهنماییت
ولی من میدونم بجای dialog.FileName میشه آدرس رو داد
میخوام فایل داخل برنامه کامپایل بشه که وقتی فایل EXE برنامه رو دادم به کسی دیگه فایل TXT رو نخواد
و از خود برنامه بخونه
در مورد این گفتتون میشه بیشتر توضیح بدید که چطوری میشه فایل تکس رو داخل برنامه رشته کرد و توسط استریم ریدر خواند .
فایل حدود 100 خط میشه

IMANAZADI
پنج شنبه 05 اسفند 1389, 07:49 صبح
دوستان گرامی لطفا راهنمایی کنید ؟

Reza_Yarahmadi
پنج شنبه 05 اسفند 1389, 12:00 عصر
در مورد استرینگ یعنی اینکه یک متغیر تعریف کنید و بصورت دستی محتویات فایل رو توی اون بریزید و با اون کار کنید.

String str = "Your File Data";
هر جا به محتویات فایل نیاز دارید میتونید از متغیر Str استفاده کنید. این کار برای حالتی خوبه که محتویات فایل شما همیشه ثابت باشه.
در مورد Resource هم از پنجره Solution پوشه Properties رو باز کرده و روی Resources دابل کلیک کنید. از دکمه ها بالا پنجره باز شده Add Resource رو بزنید فایل مورد نظرتون رو انتخاب کنید. با این کار فایل مورد نظر به فایل Exe شما اضافه میشه و میتونید بصورت زیر ازش استفاده کنید.

richTextBox1.Text = Properties.Resources.YourFileName;

IMANAZADI
پنج شنبه 05 اسفند 1389, 16:54 عصر
دوست عزیز خیلی ممنون از راهنماییت
خیلی کمکم کرد ولی یه مشکل کوچولو هست
RESOURCE همون چیزی هست که میخوام
محتویات فایل تکس هم ثابت هست و بعد از کامپایل شدن تغییر نخواهد کرد
ولی توسط استریم ریدر چطوری میشه فایل پRESOURCE را خوند ERROR میده



StreamReader stre = new StreamReader (Properties.Resources.YourFileName);

richTextBox1.Text = stre.ReadToEnd ();



شاید بپرسید چرا از استریم استفاده میکنم و مستقیم از کد زیر استفاده نمیکنم


richTextBox1.Text = Properties.Resources.YourFileName;


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

حالا ممنون میشم بگید چطوری میشه توسط استریم ریدر فایل RESOURCE را خواند.
با تشکر

Reza_Yarahmadi
جمعه 06 اسفند 1389, 10:41 صبح
نمیدونم به چه دلیل اصرار بر استفاده از استریم دارید! :متفکر:
در Resource محتویات فایل ریخته میشه (بصورت استرینگ) و تنها راهی که میشه با استریم باهاش کرد اینه که ابتدا محتویات Resource رو فرضا در پوشه Temp ذخیره کنید و بعد با استریم باهاش کار کنید.
ولی در کل (تقریبا) هر کاری رو که با استریم روی فایل انجام میدید ، میتونید خودتون بر روی استرینگ هم پیاده سازی کنید. فرضا اگر میخواید خط به خط فایل رو بخونید ، میتونید رشته مورد نظر رو بر اساس خطوطش به آرایه تبدیل کنید (هر خط یک خونه از آرایه) بعد توی آرایه خط به خط جلو برید.

IMANAZADI
جمعه 06 اسفند 1389, 19:26 عصر
دوست گرامی چطوری میشه توی پوشه TEMP ذخیره کرد ؟؟؟
این برنامه من یک فایل تکس مخصوص را توسط استریم ریدر بصورت کاراکتر به کاراکتر بوسیله نخ (جهت هنگ نکردن برنامه)توی یک RICHTEXT BOX می نویسه
دلیل اصرار من از استریم بخاطر خوندن کاراکتر به کاراکتر هست عزیز

Reza_Yarahmadi
جمعه 06 اسفند 1389, 20:28 عصر
دوست گرامی چطوری میشه توی پوشه TEMP ذخیره کرد ؟؟؟
آدرس پوشه Temp رو میتونید از دستور زیر بدست بیارید

Path.GetTempPath()
و برای نام تصادفی در همین پوشه از دستور زیر

Path.GetTempFileName()

این برنامه من یک فایل تکس مخصوص را توسط استریم ریدر بصورت کاراکتر به کاراکتر بوسیله نخ (جهت هنگ نکردن برنامه)توی یک RICHTEXT BOX می نویسه
دلیل اصرار من از استریم بخاطر خوندن کاراکتر به کاراکتر هست
بجای استریم میتونید از کلاس System.IO.StringReader استفاده کنید در ضمن بصورت زیر هم میشه بصورت کاراکتر به کاراکتر از استرینگ خوند.

String str = Properties.Resources.YourFileName;
for (int i = 0; i < str.Length; i++)
textBox1.Text += str[i];