PDA

View Full Version : کپی فایل بدون حذف فایل قبلی با همان نام



rahimi.mohamad24
جمعه 20 مرداد 1391, 21:55 عصر
-آیا روشی وجود دارد که اگر فایلی قبلا در پوشه وجود داشت و قرار بود دوباره آن فایل در آنجا کپی شود،یک کپی از آن فایل ،بدون حذف فایل قبلی یا overwrite بر روی فایل قبلی،
همراه با همان اسم قبلی+یک شماره ،در همان مکان کپی شود؟

tooraj_azizi_1035
جمعه 20 مرداد 1391, 22:02 عصر
با متد File.Exists سعی کن ببینی فایل وجود داره یا نه اگه وجود داشت خودت به اسم فایل (1) رو اضافه کن.



using System;
using System.IO;

class Test
{

public static void Main()
{
string path = @"c:\SoureFile.txt";
string path2 = @"c:\NewFile.txt";
FileInfo fi1 = new FileInfo(path);
FileInfo fi2 = new FileInfo(path2);

try
{
// Create the source file.
using (FileStream fs = fi1.Create()) { }

//Ensure that the target file does not exist.
if (File.Exists(path2))
{
fi2.Delete();
}

//Copy the file.f
fi1.CopyTo(path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
}
catch (IOException ioex)
{
Console.WriteLine(ioex.Message);
}
}
}

rahimi.mohamad24
جمعه 20 مرداد 1391, 22:16 عصر
ممکنه قبلا تو اون فولدر چند تا فایل با همون اسم ولی شماره های مختلف باشه،حالا وقتی برنامه میخواد کپی کنه نمی تونه دنبال همون بگرده.کد شما اگر فایل قبلا باشه، اونو پاک میکنه

tooraj_azizi_1035
جمعه 20 مرداد 1391, 22:24 عصر
من در کد بالا خواستم نحوه کار با Exists رو با یه مثال ببینی. نامگذاری فایل ها باید قاعده خاصی داشته باشه مثل ویتدوز: NewFolder, NewFolder(1), ...
اگه این قاعده وجود داشته باشه اونوقت میشه آخرین شماره رو پیدا کرد و یکی بهش اضافه کرد و بعد اون رو به اسم فایل اضافه کرد و اون رو ساخت. برای این کار باید با Linq اول فایل هایی رو که مثلاً MyFile جزو اسم اون ها هست (یا بهتر اینکه با MyFile شروع میشن و حداکثر طول خاصی دارند (برای اینکه فایل های دیگه که MyFile جزوی از اسمشون هست رو درگیر نکنی) رو فیلتر کنی.

نمی دونم مطلبی که گفتم تا چه حد کمکت می کنه؟