PDA

View Full Version : سوال: مشکل در تغییر نام فایل به وسیله برنامه



karim orooji
شنبه 08 اسفند 1388, 15:57 عصر
Dim path As String = AppDomain.CurrentDomain.BaseDirectory & "pic\" & n.ToString + "_" + f.ToString & ".jpeg"

Dim txt As String = txt_name.Text + "_" + txt_family.Text + ".jpeg"

My.Computer.FileSystem.RenameFile(path, txt)


با سلام به دوستان گلم
با این کد که پوشه ای در برنامه به نام pic هست عکس مورد نظرو rename میکنم
تا اینجا مشکلی نیست
ولی مشکلی که دارم 2 بار پشت سر هم نیاد یک فایلی رو تغییر نام بده خطا میگیره

اینم خطاش :

The process cannot access the file because it is being used by another process.

Javad_raouf
شنبه 08 اسفند 1388, 17:48 عصر
من همیشه از FSO استفاده می کنه به نظرم خیلی بهتره

karim orooji
شنبه 08 اسفند 1388, 18:14 عصر
یکم بیشت درباره اش توضیح بده

ricky22
شنبه 08 اسفند 1388, 18:51 عصر
یکم بیشت درباره اش توضیح بده
file system object
جستجو کنید
File System object in vb.net
ببخشید الان نمی تونم سورس بزارم

Netsky
شنبه 08 اسفند 1388, 19:04 عصر
Dim path As String = AppDomain.CurrentDomain.BaseDirectory & "pic\" & n.ToString + "_" + f.ToString & ".jpeg"

Dim txt As String = txt_name.Text + "_" + txt_family.Text + ".jpeg"

My.Computer.FileSystem.RenameFile(path, txt)


با سلام به دوستان گلم
با این کد که پوشه ای در برنامه به نام pic هست عکس مورد نظرو rename میکنم
تا اینجا مشکلی نیست
ولی مشکلی که دارم 2 بار پشت سر هم نیاد یک فایلی رو تغییر نام بده خطا میگیره

اینم خطاش :

The process cannot access the file because it is being used by another process.
سلام .
فایله عکس رو قبلا در برنامه خودتون باز نکردید ؟؟؟ مثلا اون رو در یک PictureBox نمایش ندادید ؟؟؟ :متفکر:
اگه اینکار رو کرده باشید ، نمیتونید فایل رو تغییر نام بدید و ظاهرا اون Error ی رو هم که نوشتید از این موضوع حکایت میکنه .
موفق باشید ..................

Javad_raouf
شنبه 08 اسفند 1388, 20:41 عصر
سلام .
فایله عکس رو قبلا در برنامه خودتون باز نکردید ؟؟؟ مثلا اون رو در یک PictureBox نمایش ندادید ؟؟؟
اگه اینکار رو کرده باشید ، نمیتونید فایل رو تغییر نام بدید و ظاهرا اون Error ی رو هم که نوشتید از این موضوع حکایت میکنه .
موفق باشید ..................
من فکر می کنم باگ باشه
و موقع تغییر نام فایل رو نمی بنده
برای همین موقع تغییر نام دوم گیر میده چون از دفعه اول فایل باز مونده

برای مطمئن شدن از این مطلب روی سیستمت Unloccker نصب کن و وقتی یک بار فایل رو تغییر نام دادی با این نرم افزار ببین فایل توسط نرم افزاری بازه یا نه

یکم بیشت درباره اش توضیح بده
با اینکه تشکر نکردی بازم باشه:لبخند:

برو اینجا:
project > Add Reference
توی سربرگ com
microsoft scripting runtime
رو انتخاب کن و ok رو بزن
بعد توی برنامت این کد رو بنویس:

Dim fso As New Scripting.FileSystemObject
حالا متغیر fso کارش همین کار با فایلهاست
اگر fso رو تایپ کنی و نقطه بزاری همه چیش مشخصه

Open-Source
شنبه 08 اسفند 1388, 22:04 عصر
دوست عزیز اینطور که شما کد نوشتید فقط یه بار فایل باز میکنید و دیگه نمیبندید.
برای تغییر نام از این کد استفاده کن:


Imports System.IO
File.Move(Path1, path2)

Netsky
شنبه 08 اسفند 1388, 23:18 عصر
دوست عزیز اینطور که شما کد نوشتید فقط یه بار فایل باز میکنید و دیگه نمیبندید.
برای تغییر نام از این کد استفاده کن:


Imports System.IO
File.Move(Path1, path2)

سلام .
دوست عزیز ، Move کردن یه فایل چه ربطی به Rename کردن اون داره .
:متعجب:

Javad_raouf
شنبه 08 اسفند 1388, 23:36 عصر
دوست عزیز ، Move کردن یه فایل چه ربطی به Rename کردن اون داره .

اتفاقا روش جالبیه

Netsky
شنبه 08 اسفند 1388, 23:58 عصر
اتفاقا روش جالبیه
سلام .
شاید از نظر شما جالب باشه ولی اصلا این روش اصولی نیست و واقعا اگه یه نفر سورس برنامه رو بهش بدیم و این روش رو واسه تغییر نام فایل ببینه ، آیا بهمون نمی خنده ؟!!! :قهقهه:

amin_iman82
یک شنبه 09 اسفند 1388, 00:12 صبح
این همه دردسر چرا؟



Rename ("c:\a.txt", "c:\a1.txt")

karim orooji
یک شنبه 09 اسفند 1388, 00:52 صبح
با سلام به دوستان عزیز
ممنونم که زحمت کشید بنده حقیر رو راهنمایی کردید
فقط توی برنامه از متد dispose کم داشت
2 روز الاف این کار بودم :اشتباه:




pic.Image.Dispose()

Dim path As String = AppDomain.CurrentDomain.BaseDirectory & "\pic\" & n + "_" + f & ".jpeg"

Dim txt As String = txt_name.Text + "_" + txt_family.Text
My.Computer.FileSystem.RenameFile(path, txt + ".jpeg")
pic.Image.Dispose()


با تشکر از دوستانی که زحمت کشیدند:تشویق::لبخندساده:

Netsky
یک شنبه 09 اسفند 1388, 00:53 صبح
این همه دردسر چرا؟



Rename ("c:\a.txt", "c:\a1.txt")

سلام .
دوست عزیز ، شما پست اول رو دقیق خوندی ؟؟
مشکل اون Error هست .

karim orooji
یک شنبه 09 اسفند 1388, 00:54 صبح
سلام .
شاید از نظر شما جالب باشه ولی اصلا این روش اصولی نیست و واقعا اگه یه نفر سورس برنامه رو بهش بدیم و این روش رو واسه تغییر نام فایل ببینه ، آیا بهمون نمی خنده ؟!!! :قهقهه:
با سلام دوست عزیز
شاید حق با شما باشه ولی امتحانش کردم جواب داد

Open-Source
یک شنبه 09 اسفند 1388, 10:24 صبح
سلام .
شاید از نظر شما جالب باشه ولی اصلا این روش اصولی نیست و واقعا اگه یه نفر سورس برنامه رو بهش بدیم و این روش رو واسه تغییر نام فایل ببینه ، آیا بهمون نمی خنده ؟!!! :قهقهه:

به نظر شما مشکل این کد چیه که اونو مسخره میکنه؟؟
فکر کردی خود PC چطوری اسم یه فایل رو Rename میکنه؟
فکر کردی اومدن یه مشت کد جدا برای Rename فایل نوشتن؟
:گیج:

Netsky
یک شنبه 09 اسفند 1388, 13:25 عصر
به نظر شما مشکل این کد چیه که اونو مسخره میکنه؟؟
فکر کردی خود PC چطوری اسم یه فایل رو Rename میکنه؟
فکر کردی اومدن یه مشت کد جدا برای Rename فایل نوشتن؟
:گیج:
سلام .
ببین دوست عزیز من که قصد کل کل با شما رو ندارم !
ولی لابد مایکروسافت دیونه بوده و اومده این قسمت رو در زبان VB.Net قرار داد :


My.Computer.FileSystem.RenameFile

Rename کردن یه فایل یه بحث جداست و Move کردنش یه بحثه دیگه .
حالا اگه شما میدونی که اون روش بدردت میخوره در پروژهات استفاده کن .
موفق باشید ................ :لبخندساده:

Open-Source
یک شنبه 09 اسفند 1388, 14:04 عصر
شما قبول دارید که system.io.file برای کار با فایل هست یا نه؟
اگه قبول داری، برو ببین متدی به اسم rename داره یا نه؟


My.Computer از همین کلاس ها استفاده میکند، فقط کار باهاش راحت تر و برای کاربران.
:بوس:

Netsky
یک شنبه 09 اسفند 1388, 15:11 عصر
با سلام .


شما قبول دارید که system.io.file برای کار با فایل هست یا نه؟
اگه قبول داری، برو ببین متدی به اسم rename داره یا نه؟

قبول دارم . ولی اینکه دلیل نمیشه چون در کلاس File این متد وجود نداره در کلاس های دیگه هم وجود نداشته باشه .
شما میتونی به این کلاس مراجعه کنی و میبینی که متد Rename از اونجا نشات میگیره ( FileSystem ) :



Microsoft.VisualBasic.FileIO.FileSystem

در ضمن ، دوست عزیز من که گفتم قصد بحث با شما رو ندارم . اون روشی هم که شما گفتی درسته . :لبخندساده:
اگه شما با اون روش راحتی ، از اون روش استفاده کن .
اگه بخایم همینطوری ادامه بدیم ، مطمئنا پست هامون از طرف مدیران پاک میشه .
موفق و سربلند باشید ............. :بوس::لبخندساده: