Salar Ashgi
جمعه 25 دی 1388, 21:26 عصر
سلام به همه دوستان ، من میخوام برنامه File splitter & merger   درست کنم که کاربر بتونه
یک فایل رو به چندین فایل(تعداد دلخواه) با یک پسوند (دلخواه) تقسیم کنه و بعد بتونه باهم
ادغام کنه ؟ (مثل برنامه Winrar ) 
البته خودم تقسیم یک فایل به دو قسمت رو نوشتم با توابع File.ReadAllBytes ولی وقتی بخوایم
تعداد فایل تقسیم شده نامحدود باشه ، چه روشی باید استفاده کنیم ؟
AliRezaPro
جمعه 25 دی 1388, 23:36 عصر
این کد رو نگاه کن
public static bool MergeFile(string InputFileFolder)
        {
            bool Output = false;
            try
            {
                string[] tmpfiles = Directory.GetFiles(InputFileFolder, "*.tmp");
                FileStream outPutFile = null;
                string PrevFileName = "";
                foreach (string tempFile in tmpfiles)
                {
                    string fileName = Path.GetFileNameWithoutExtension(tempFile);
                    string baseFileName = fileName.Substring(0, fileName.IndexOf(Convert.ToChar(".")));
                    string extension = Path.GetExtension(fileName);
                    if (!PrevFileName.Equals(baseFileName))
                    {
                        if (outPutFile != null)
                        {
                            outPutFile.Flush();
                            outPutFile.Close();
                        }
                        outPutFile = new FileStream(InputFileFolder + "\\" + baseFileName + extension, FileMode.OpenOrCreate, FileAccess.Write);
                    }
                    int bytesRead = 0;
                    byte[] buffer = new byte[1024];
                    FileStream inputTempFile = new FileStream(tempFile, FileMode.OpenOrCreate, FileAccess.Read);
                    while ((bytesRead = inputTempFile.Read(buffer, 0, 1024)) > 0)
                        outPutFile.Write(buffer, 0, bytesRead);
                    inputTempFile.Close();
                    File.Delete(tempFile);
                    PrevFileName = baseFileName;
                }
                outPutFile.Close();
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            return Output;
        }
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.