PDA

View Full Version : ادغام فایل های بزرگ



kinglove0111
جمعه 17 آبان 1392, 08:53 صبح
سلام دوستان یک سوال مهم داشتم؟
من میخوام فایل های با حجم های زیاد را به هم بچسبونم!
من این کارو با فایل های که حجم کم دارند انجام دادم و هیچ مشکلی ندارد اما نمی تونم همین عملیات را بر روی فایل های بزرگ انجام بدم
به کد زیر نگاه کنید.



m = "c:\3.png"
b = FreeFile
Open m For Binary Access Write As #b

Print LOF(b)
Print Loc(b)
Seek #b, 15001
Print Loc(b)

Dim j As Byte
n = "c:\4.png"
a = FreeFile
Open n For Binary As #a

Do
Get #a, , j
Put #b, , j
DoEvents
Loop While Not EOF(a)
Close #a
Close #b


به دلیل اینکه در seek عددی از نوع long قرار میگیره نمی شود با فایل های بزرگتر از 1گیگ کار کرد.
من میخوام با فایل های خیلی بزرگ مثلا 100گیگ کار کنم که متاسفانه با این کد نمیشه

پروژه کد بالا را ضمیمه کردم دانلودش کنید و بعد اکسترکتش کنید و درونش دوتا تصویر هست که در درایو c بزاریدش و بر نامه را اجرا کنید. می بینید که دو تصویر را به هم می چسبونه و یک تصویرش میکنه، اما همین عملیات را نمیشه بر روی فایل های با حجم بالا انجام داد.

دوستان راهی هست که بشه دوتا فایل با حجم خیلی بالا را به هم چسبوند؟

من یک کد دیگه هم نوشتم که نگاش کنید



m = "C:\3.png"
b = FreeFile
Open m For Append As #b

Dim j As String
n = "C:\4.png"
a = FreeFile
Open n For Input As #a

Do
Line Input #a, j
Print #b, j;
sh = sh + 1
DoEvents
Loop While Not EOF(a)

MsgBox sh

Close #a
Close #b


اگر فایل را بصورت Append باز کنید می توانید حداکثر 5 گیگ حجم را به انتهاش اضافه کنید اما اشکالش اینجاست که اگر بخواهید فایل را بصورت Input بخوانید و به انتهای فایل قبلی اضافه کنید بیشتر از چهار خط از فایل را نمی خواند و پیام میدهد که به انتهای فایل رسیده!

خوب دوستان آیا راهی هست که بشه فایل های با حجم های خیلی بالا را خواند و نوشت؟ لطفا راهنمایی کنید.
با تشکر

112639

محسن واژدی
سه شنبه 21 آبان 1392, 13:53 عصر
سلام علیکم
نمونه زیر بررسی کنید

موفق باشید

mehran901
سه شنبه 21 آبان 1392, 20:44 عصر
پیشنهاد میکنم دستور xcopy داس رو هم بررسی کنید ، میتونید چندین فایلو بهم متصل کنید

Xcopy Command Syntax:

xcopy source [destination] [/a] [/b] [/c] [/d [:date]] [/e] [/f] [/g] [/h] [/i] [/j] [/k] [/l] [/m] [/n] [/o] [/p] [/q] [/r] [/s] [/t] [/u] [/v] [/w] [/x] [/y] [/-y] [/z] [/exclude:file1[+file2][+file3]...] [/?]

kinglove0111
چهارشنبه 22 آبان 1392, 19:12 عصر
دستت طلا آقای واژدی که جواب دادی دیگه داشتم نا امید می شدم کسی جوابمو بده

آقای واژدی کدی که دادید بیشتر از 2 گیگ فایل انتقال نمیده و بعد از 2 گیگ در یک حلقه بی نهایت گیر میکنه

لطفا یک کد دیگه معرفی کنید.

با تشکر فراوان از همگی :چشمک:

محسن واژدی
پنج شنبه 23 آبان 1392, 17:32 عصر
دستت طلا آقای واژدی که جواب دادی دیگه داشتم نا امید می شدم کسی جوابمو بده

آقای واژدی کدی که دادید بیشتر از 2 گیگ فایل انتقال نمیده و بعد از 2 گیگ در یک حلقه بی نهایت گیر میکنه

لطفا یک کد دیگه معرفی کنید.

با تشکر فراوان از همگی :چشمک:

متاسفانه در VB6 از فایل های بیشتر از 2گیگ پشتیبانه نمیشه، برای کار با این فایل ها باید از توابع API استفاده کنیم، در گوگل جستجو کنید کلاس های زیادی برای خواندن و نوشتن در فایل های +2GB وجود دارن

موفق باشید

vbhamed
پنج شنبه 30 آبان 1392, 17:17 عصر
سلام
با اين برنامه مي‌تونيد فايلهاي بزرگ رو با سرعت بسيار بالا كپي كنيد، قسمتهاي كپي به صورت كلاس تعريف شده تا استفاده از اونها راحت باشه
اسم فايلها داخل متغير F1 و F2 تو سورس برنامه هست
البته اين برنامه كار ادغام دو فايل رو انجام نميده ولي به راحتي مي‌تونيد تغييرش بديد و كد ادغام رو هم باهاش بنويسيد، روي فايل 5 گيگابايتي هم تست شده
ضمنا مقدار بافر هم قابل تغييره كه ميشه با آزمايش خطا بهترين مقدار رو برحسب سايز فايل بدست آورد