PDA

View Full Version : کپی فایل در محل مورد نظر



mehdi58
سه شنبه 09 مرداد 1386, 10:21 صبح
با سلام
من می خوام کاربر با کلیک روی یه Button بتونه فایلی رو انتخاب کنه و بعد از اون بطور اتوماتیک فایل مورد نظر در محلی مثلا ([LTRC:\Temp\[/LTR]) ذخیره بشه .( در حقیقت فایل مورد نظری که توی کامپیوتر خودش هست رو توی مسیری در همون کامپیوتر ذخیره کنه)
دقیقا مثل عمل Upload توی ASP.NET
با تشکر

saeed_rezaei
سه شنبه 09 مرداد 1386, 10:42 صبح
system.IO.File.Copy
فایل مبدا و مقصد رو بهش بده.

mehdi58
سه شنبه 09 مرداد 1386, 17:49 عصر
system.IO.File.Copy
فایل مبدا و مقصد رو بهش بده.



قبل از ارسال تاپیک از همین روش استفاده کردم اما جواب نداد .
من می خوام به کمک کد زیر فایل مورد نظرم رو که از طریق OpenFileDialog می خونم رو توی فایل Temp.txt ذخیره کنم :

Dim src,des as string
des="..\myFolder\temp.txt"
Dim OpenFileDialog as New OpenFileDialog
If OpenFileDialog .ShowDialog()=DialogResult.Ok Then
OpenFileDialog.restoreDirectory=True
src=OpenFileDialog.FileName
End If
File.Copy(src,des,True)

اما با خطای زیر روبرو می شم :
An Unhandled exception of type ' system.IO.Directory Not Found Exception ' occurred in mscorlib.dll.

Additional information : could not found a part of the path "..\myFolder\temp.txt"


من می خوام آدرس دهی مقصد بصورت Absolute باشه و نه Relative .
متشکرم

bad_boy_2007
سه شنبه 09 مرداد 1386, 19:12 عصر
ممکنه فایلت باز بوده که نتونستی کپی کنی
همونطور که saeed_rezaei عزیز گفتن system.io.file.copy برای این کار به کار میره مشکل شما اینه که آدرس مطلق (Absolute ) درست ایجاد نکردید :

Additional information : could not found a part of the path "..\myFolder\temp.txt"

بجای قرار دادن .. در رشتهای که آدرس نسبی (Relative ) از \ استفاده کن با system.io.file.copy کارت راه میوفته .

پیش از اقدام به کپی آدرس فایل (آدرس مطلق) رو در یک مسیج باکس بزار نمایش بده ببین آدرس درست ایجاد شده ؟ بعد از تست برنامه این کد رو حذف کن (مسیج باکس رو) و بجای اون از system.IO.File.Exists برای تست کردن اینکه فایل با نام و آدرس مورد نظر وجود داره یا نه استفاده کن .
این نکته رو هم فراموش نکن که در انجام اینگونه امور از بلوک try استفاده کنی .

mehdi58
سه شنبه 09 مرداد 1386, 20:38 عصر
منظور شما اینه که آدرس des رو به صورت زیر تعریف کنم :

des="\myFolder\temp.txt"

دوست عزیز قبلا این کار رو انجام دادم و مطمئن هم هستم که فایل باز نیست اما باز هم عمل کپی اتفاق نمی افته !!!

Business Analyst
سه شنبه 09 مرداد 1386, 21:56 عصر
این رو نگاهخ کنید ببینید حل میشه یا نه!


PublicClassForm1

PrivateSubForm1_Load(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs) HandlesMyBase.Load
System.IO.File.Copy(Application.StartupPath + "//salam.txt", Environment.GetFolderPath(Environment.SpecialFolde r.Desktop) + "//salam.txt")
EndSub
EndClass

فکر کنم اشتباه دو تا بک اسلش باشه
در ضمن بنده پیشنهاد میدم که مسیر هاتونه به شکل بالا تعریف کنید!!!
اکه حل نشد بگین
ممنون

mehdi58
پنج شنبه 11 مرداد 1386, 17:30 عصر
این رو نگاهخ کنید ببینید حل میشه یا نه!


PublicClassForm1

PrivateSubForm1_Load(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs) HandlesMyBase.Load
System.IO.File.Copy(Application.StartupPath + "//salam.txt", Environment.GetFolderPath(Environment.SpecialFolde r.Desktop) + "//salam.txt")
EndSub
EndClass

فکر کنم اشتباه دو تا بک اسلش باشه
در ضمن بنده پیشنهاد میدم که مسیر هاتونه به شکل بالا تعریف کنید!!!
اکه حل نشد بگین
ممنون

خطای زیر به وجود اومد :

The given paths format is not supported .

mehdi58
پنج شنبه 11 مرداد 1386, 17:33 عصر
من آدرس مقصد رو به صورت زیر تعریف کردم :
des=Application.StartPath & “\myFolder\temp.txt”

و خطای زیر به وجود اومد :


Could not find a part of the path “C:\Document and settings\....”

اما همونطور که می دونین با استفاده از این روش فقط به پوشه Bin دسترسی خواهین داشت ، پس من هم فولدر مورد نظرم رو به اونجا منتقل کردم و جواب گرفتم .
اما اگه من نخوام این فولدر توی پوشه Bin باشه چی ؟
یعنی نمی شه این فولدر توی Root باشه و آدرس مقصد بصورت زیر تعریف بشه :


des = “\myFolder\temp.txt”

Business Analyst
پنج شنبه 11 مرداد 1386, 20:52 عصر
نبایدم باشه!!:D
دوست من اگه دقت میکردین مسیر رو باید با 2 تا / بزنی!
farshad.txt//
اینطوری
دقیقا مثل کدی که دادم

PublicClassForm1

PrivateSubForm1_Load(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs) HandlesMyBase.Load
System.IO.File.Copy(Application.StartupPath + "//salam.txt", Environment.GetFolderPath(Environment.SpecialFolde r.Desktop) + "//salam.txt")
EndSub
EndClass

mehdi58
جمعه 12 مرداد 1386, 09:54 صبح
نبایدم باشه!!:D
دوست من اگه دقت میکردین مسیر رو باید با 2 تا / بزنی!
farshad.txt//
اینطوری
دقیقا مثل کدی که دادم

PublicClassForm1

PrivateSubForm1_Load(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs) HandlesMyBase.Load
System.IO.File.Copy(Application.StartupPath + "//salam.txt", Environment.GetFolderPath(Environment.SpecialFolde r.Desktop) + "//salam.txt")
EndSub
EndClass

دوست عزیز شما کد زیر رو بنویس و توی همون خط یه Breakpoint بگذار :

src = Application.StartupPath + "//salam.txt"

موقع اجرا می بینی که محتویات src بصورت زیر میشه :

C:\DocumentAndSettings\myPC\MyDocument\Visual Studio Projects\myProject\bin//salam.txt

پس اگه خوب دقت کنی می بینی که با Application.StartupPath مستقیما به پوشه bin پروژه ات دسترسی خواهی داشت .
در حالیکه من قبلا می خواستم اگه این فایل متنی توی یه فولدری دیگه که توی Root باشه به اون دسترسی داشته باشم .