PDA

نسخه کامل مشاهده نسخه کامل : طول فایل 8 بایت؟



Life24
14-12-2013, 21:35
سلام
من طول باید رو میگیرم اما 8 بایت بهم برمیگردونه چرا؟ اما فقط 1 بایت رو اشغال میکنه. چرا این طوره؟ راح حل چیست؟ 7 بایت اضافه میره همسشه؟

string path = @"e:\t.txt";
FileStream f = new FileStream(path,FileMode.Open,FileAccess.ReadWrite );
long length = f.Length;
byte[] bytes = BitConverter.GetBytes(length);

_H2_
15-12-2013, 14:44
سلام
طول فایل شما شاید 0 بایت باشد و شاید چند گیگ ولی خروجی کد شما همواره عدد 8 خواهد بود!
کمی به کد خودتان نگاه کنید...!

شما متغییر length را از نوع long تعریف کرده اید و آن را به آرایه بایتی تبدیل کرده اید
دقیقاً چه انتظاری دارید؟؟؟

نوع long یک عدد 64 بیتی و 8 بایتی است! به همین سادگی! اصلاً کاری به فایل تان ندارد، این دو بحث مستقل است.
کد شما با کد من چه تفاوتی دارد؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اینجا من دارم x را به آرایه های بایتی اش تبدیل میکنم.
x هم نوع long است و همیشه 8 بایت فضا میگیرید.
همانطور که متغییر های int همواره 4 بایت فضا میگریند.

==============

نکات:
اول)
بهتر است برای کدهای برنامه نویسی تان در تالارهای گفتگو بجای تگ quote از تگ code استفاده کنید تا مشکل چپ به راست نداشته باشد و صحیح نمایش داده شود.

دوم)
انشاا... FileStream که Open کرده اید را حتماً جایی Dispose میکنید؟!

سوم)
خواندن کل بایت های یک فایل

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(اخطار: در برنامه نویسی واقعی نباید از این دستورات استفاده کرد، چون حجم فایل را نمیدانیم و میتواند مشکلات کمبود حافظه RAM ایجاد کند)

موفق باشید.