PDA

View Full Version : خواندن جزء به جزء یک فایل



ali ali10
جمعه 10 مهر 1394, 19:56 عصر
با سلام
من می خواهم فایلی را باز کرده و اطلاعات داخل آنرا 1000 بایت به 1000 بایت را دریافت کرده و آنرا در داخل یک آرایه مثل ByteArray ذخیره کرده و عملیاتی بر روی آن انجام داده و سپس 1000 بایت بعدی را در یافت کنم برای این کار از کد زیر استفاده کرده ام

int nBytesRead = input.Read(ByteArray, loaction, 1000);

حال زمانی که دومین دسته 1000 تایی را می خواهم دریافت کنم loaction=1000 شده و من انتظار دارم که بایت های 1000 الی 1999 در ByteArray قرار گیرد ولی با خطا روبه رو می شوم. با دردسر زیاد متوجه شدم که طول آرایه ByteArray حداقل باید برابر با طول فایل باشد تا از هر کجای فایل که بخواهم بتوانم دسته های هزار تایی را بردارم مثلا اگر فایل من 1 مگابایت باشد و من بخواهم به 1000 بایت آخر دسترسی داشته باشم باید ByteArray برابر 1 مگابایت شود و زمانی که دستور فوق را اجرا می کنم تنها 1000 بایت آخر فایل را در 1000 بایت آخر ByteArray قرارمی دهد!!!!!!!!!!!!!!!!!!!!
اما من نمی خواهم ByteArray از 1000 بایت زیادتر شود و از هر جای فایل که می خواهم 1000 بایت در ByteArray قرار گیرد
چگونه باید این کار را انجام دهم؟؟؟

Felony
جمعه 10 مهر 1394, 20:53 عصر
private byte[] ReadBytes(FileStream mem, int offset, int mustReadBytes)
{
mem.Position = offset;

byte[] buffer;

if ((offset + mustReadBytes) > mem.Length)
{
mustReadBytes = ((int) mem.Length - offset);
buffer = new byte[mustReadBytes];

mem.Read(buffer, 0, mustReadBytes);
}
else
{
buffer = new byte[mustReadBytes];
mem.Read(buffer, 0, mustReadBytes);
}

return buffer;
}