PDA

View Full Version : مشکل در ذخیره فایل آهنگ



setareh2013
چهارشنبه 25 مرداد 1391, 23:30 عصر
سلام
من از کد زیر برای ذخیره عکس و بدست آوردن نام فایل استفاده کردم.


saveFileDialog1.Filter = "mp3 Files|*.mp3|wave files|*.wave";
saveFileDialog1.FilterIndex = openFileDialog1.FilterIndex;
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
filename = saveFileDialog1.FileName;


saveFileDialog1.Filter = "mp3 Files|*.mp3|wave files|*.wave";
saveFileDialog1.FilterIndex = openFileDialog1.FilterIndex;
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
filename = saveFileDialog1.FileName;

چند تا مشکل دارم .
یکی اینکه وقتی نام فایل رو می خوام به این صورت نمایش میده C:\Users\Public\Music\Sample Music\Kalimba.mp3
در حالی که من فقط قسمت آخر یعنی Kalimba.mp3 رو میخوام باید چه کار کنم .
یکی دیگه این که توی قسمت آخر مشکل دارم . من می خوام آهنگ ها داخل یک پوشه به نام music در درایو D ذخیره بشه باید چه کار کنم .

gwbasic
چهارشنبه 25 مرداد 1391, 23:54 عصر
از کلاس Path برای کار با مسیر و نام فایل می تونید استفاده کنید مثلا Path.GetFileName(filename)‌می تونید برای گرفتن نام فایل از مسیر استفاده کنید و ... .
اگر فایلها قراره در یک مسیر مشخص ذخیره بشه بنابراین دیگه نیازی به نمایش SaveFileDialog‌ نیست. باید از File یا StreamWirter استفاده کنید

sinaprog
چهارشنبه 25 مرداد 1391, 23:57 عصر
string filename= System.IO.Path.GetFileName(saveFileDailog1.FileNam e);

felfely
پنج شنبه 26 مرداد 1391, 00:16 صبح
برای قسمت اول سوالتون اینکه باید این کار رو انجام بدین:


string[] sub = Directory.GetFiles(@"C:\Users\Public\Music\Sample Music");

foreach (string str in sub)
{
string name = new DirectoryInfo(str).Name;
comboBox2.Items.Add(name);
}

setareh2013
پنج شنبه 26 مرداد 1391, 11:11 صبح
از کلاس Path برای کار با مسیر و نام فایل می تونید استفاده کنید مثلا Path.GetFileName(filename)‌می تونید برای گرفتن نام فایل از مسیر استفاده کنید و ... .
اگر فایلها قراره در یک مسیر مشخص ذخیره بشه بنابراین دیگه نیازی به نمایش SaveFileDialog‌ نیست. باید از File یا StreamWirter استفاده کنید

با تشکر از شما میشه یه کم بیشتر توضیح بدین .
من در ای اس پی از کد زیر برای ذخیره فایل در پوشه و نام و ادرس اون در پایگاه داده استفاده می کنم.
path = string.Format("~/Images/{0}", FileUpload1.FileName);
filename = Path.GetFileName(FileUpload1.FileName);
FileUpload1.SaveAs(Server.MapPath("~/Images/") + filename);
ولی در win app نمی دونم .

setareh2013
پنج شنبه 26 مرداد 1391, 11:15 صبح
string filename= System.IO.Path.GetFileName(saveFileDailog1.FileNam e);

قسمت دوم رو چه کار کنم . اینکه آهنگ رو در درایو D در پوشه music ذخیره کنم.
ممنون

saman_h
پنج شنبه 26 مرداد 1391, 11:30 صبح
سلام
دوست عزیز شما واسه اینکه کل آدرس رو برنگردونه و فقط اسم فایل + پسوند رو بهتون نشون بده کافیه بجای استفاده از خصوصیت FileName مربوط به اون SaveDialog برید از خصوصیت SafeFileName استفاده کنید که مشکلتون حل بشه و فقط نام فایل رو بهتون بده
واسه مشکل آدرستون هم میتونید کلا یه شیء FolderBrowser بذارید که خودتون آدرسش و انتخاب کنید . به این صورت :
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string savelocation = folderBrowserDialog1.SelectedPath + @"\";
}
و اونجا که میخواید آدرس بدید از ائن متغییر SaveLocation استفاده کنید
اگرم دوست نداشتی از FolderBrowser استفاده کنی میتونی یه متغیر سراسری تعریف کنی به اینصورت :
string savelocation = @"D:\music\";
اما مشکل اینجاس باید حتما این پوشه وجود داشته باشه . پس پیشنهاد میکنم از همون FolderBrowser استفاده کن
اگه مشکلی داشتید من درخدمتم
موفق باشی

setareh2013
پنج شنبه 26 مرداد 1391, 22:26 عصر
خب فرض کنید نام فایل من مثلا music.mp3 باشه . چه طوری باید بگم این فایل آهنگ رو داخل این پوشه ذخیره کن .

saman_h
جمعه 27 مرداد 1391, 20:17 عصر
به دو صورت میتونم راهنماییت کنم
راه اول اینکه اون فایل رو با دستور کپی ذخیرش کنی به این صورت :
OpenFileDialog op = new OpenFileDialog();
op.Filter = "mp3 files|*.mp3";
if (DialogResult.OK == op.ShowDialog())
System.IO.File.Copy(op.FileName, "D:\\Music"+System.IO.Path.GetFileName(op.FileName ));


و یه روش دیگه اینکه بیای از دستورات Read و Write استفاده کنی به این صورت :
اینجوری بخونی و تبدیل به بایت کنی :
OpenFileDialog o = new OpenFileDialog();
if (o.ShowDialog() == DialogResult.OK)
{

byte[] fileBytes = File.ReadAllBytes(o.FileName);
}
و اینجوری فایل رو بسازیش :
File.WriteAllBytes("مسیر", fileBytes );

موفق باشی