PDA

View Full Version : سوال: کپی یک فایل درون خود برنامه



This_is_ALireza
دوشنبه 15 اسفند 1390, 16:05 عصر
من می خوام یک فایل رو توی برنامم کپی کنم تا وقتی برنامم اجرا شد اون فایل توی یه درایو کپی بشه ، امکانش هست ؟ نمی خوام فایلم قابل رویت باشه و باید توی خود برنامه وجود داشته باشه

jeson_park
دوشنبه 15 اسفند 1390, 16:58 عصر
سوالتون واضح نیست
دقیقا می خواید چی کار کنید
منظورتون از "باید توی خود برنامه وجود داشته باشه " چی هست؟
خب برای این کار می تونید فایل مورد نظرتون رو توی پوشه temp کپی کنید .در واقع ماکروسافت پوشه temp روبرای همین ساخته!


// Name File ke mikhahid copy Shavad
string fileName = "test.txt";

// Be dast Avardane masri barname(File Dar In Masir Ast)
string appPath = AppDomain.CurrentDomain.BaseDirectory.ToString();

// Be dast Avardane Masri Folder "Tem"(File be in masir copy mishavad)
string tempPath = System.IO.Path.GetTempPath();

// bas estefade az tabbe 'Combine' name file ra be enthaye masir be dast amade azafe mikonim
appPath = System.IO.Path.Combine(appPath, fileName);

tempPath = System.IO.Path.Combine(tempPath, fileName);

// Copy That!
System.IO.File.Copy(appPath, tempPath, true);

mrbm_2007
دوشنبه 15 اسفند 1390, 19:58 عصر
می تونید فایل مورد نظر رو درون Resource های برنامه قراره داده و در موقع نیاز به اون، اون رو توی یه مسیر مشخص (مثلا temp dir) کپی کرده و استفاده کنید

This_is_ALireza
سه شنبه 16 اسفند 1390, 01:46 صبح
سوالتون واضح نیست
دقیقا می خواید چی کار کنید
منظورتون از "باید توی خود برنامه وجود داشته باشه " چی هست؟
خب برای این کار می تونید فایل مورد نظرتون رو توی پوشه temp کپی کنید .در واقع ماکروسافت پوشه temp روبرای همین ساخته!


دوست عزیز کپی کردن رو بلدم ولی می خوام فایلی رو کپی کنم که درون برنامه وجود داشته باشه و نیازی نباشه که وقتی فایل Exe رو به کسی میدم مجبور بشم اون فایل رو هم بهش بدم ، فرض کن می خوام یه فایل dll همزمان با اجرای برنامم توی سیستم طرف کپی بشه این فایل dll رو کجا باید بریزم؟
این کدهایی که شما زحمتش رو کشیدی و نوشتی نیاز به فایل اصلی داره و اگه فایل Exe تنها رو به کسی بدیم قابل اجرا نیست و باید فایلی که می خواهیم کپی کنیم رو هم بهش بدیم
متوجه منظورم شدید ؟ یعنی این فایل باید درون فایل Exe وجود داشته باشه البته فکر کنم با ساخت Setup برای برنامه بشه این کار رو کرد ولی من فعلا نمی خوام Setup درست کنم.



می تونید فایل مورد نظر رو درون Resource های برنامه قراره داده و در موقع نیاز به اون، اون رو توی یه مسیر مشخص (مثلا temp dir) کپی کرده و استفاده کنید

چطور می شه درون Resource کپی کرد؟ دستی کپی می کنم با استفاده از دستور زیر نمی تونم بهش دسترسی پیدا کنم در حالی که به فایل های jpg که اونجا کپی کردم دسترسی دارم
Project Name.Properties.Resources.FileName

mrbm_2007
سه شنبه 16 اسفند 1390, 07:03 صبح
دستی کپی می کنید؟ یعنی چجوری؟
برای اضافه کردن به Resource ها باید روی پروژه راست کلیک کرده وارد Properties شده در تب Resources فایل مورد نظر رو اضافه کنید
83729

برای کپی کردن فایل از درون Resource هم از کد زیر استفاده کنید


using System.IO;



public static void ExportFile(byte[] resource, string fileName)
{
using (var binWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
binWriter.Write(resource);
binWriter.Close();
}
}



ExportFile( Properties.Resources. YourResourceFileName, OutFile_Path);

This_is_ALireza
چهارشنبه 17 اسفند 1390, 00:17 صبح
داداش دمت گرم درست شد.