PDA

View Full Version : کار با فایل های حجم بالا (> 10GB)



Mr'Jamshidy
دوشنبه 30 اردیبهشت 1392, 16:42 عصر
سلام

من میخوام با فایل های حجم بالا کار کنم
حجمشون اصلا معلوم نیست ولی باید خیلی زیاد باشه

اومدم با FileStream کار کنم اما چیزی که من دیدم توانایی کار با حجم محدودی دو داره چون Offset از نوع Integer میگرفت

اومدم با FileOpen --> API کار کنم هم میگه:


A call to PInvoke function 'DB Sample!DB_Sample.FileControl::OpenFile' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

این Invoke به چه دردی میخوره؟
همش اذیت میکنه؟

حالا در کل باید من چی کار کنم؟ اگر بشه با توابع دات نت کار کنم بهتره

در ضمن با FileStream هم خواستم فایل رو باز کنم خطا میداد و باز نمیکرد
فایل هم وجود داره و قفل هم نیست

ممنون

barnamenevisjavan
سه شنبه 31 اردیبهشت 1392, 09:52 صبح
فرمت فایلت چیه؟صوتی؟تصویری؟متنی؟

Mr'Jamshidy
سه شنبه 31 اردیبهشت 1392, 14:11 عصر
اصلا فرمت فایل مهم نیست اما نوع فایل بایناری(Binary) هست و در همین حالت باید روش کار کنم، فایل مورد نظر هم اصلا پسوند نداره
به عبارتی فایل دستی ساخته میشه و هدف ساخت اون بانک اطلاعاتی هست فعلا حجمش کمه اما در آینده حجمش زیاد میشه و من میخوام که طوری طراحی بشه که در آینده که حجم کار هم زیاد شد باز هم به مشکل برنخوره

حالا راهکار شما برای مدیریت فایل چیه؟ اصلا .Net از این موضوع پشتیبانی میکنه؟

joker
سه شنبه 31 اردیبهشت 1392, 20:54 عصر
از توابع FileMapping (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx)استفاده كن ايشالا كه مشكل حل بشه

Mr'Jamshidy
جمعه 03 خرداد 1392, 18:22 عصر
از توابع FileMapping (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx)استفاده كن ايشالا كه مشكل حل بشه

دقیقا کار File Mapping چی هست؟

من با همون FileStream دیدم یک دستور داره به اسم Seek که ورودی دستور یکی مقدار پرش هست و یکی این که از کجا پرش کنه
البته نوع ورودی Offset از نوع Long هست که 9223372036854775807 عدد میگیره و طبق حساب من میشه 8191 اگزابایت که فکر نمیکنم اصلا اینقدر نیاز باشه

فکر کنم همون دستور کارم رو راه بندازه

ولی باز هم برای این منظور کد آماده ای چیزی بود لطفا همینجا بزارید