ورود

نسخه کامل مشاهده نسخه کامل : فایل ها در C#.NET



without_all
22-11-2009, 22:46
سلا م
خدا قوت


یه چنتا سوال در مورد file ها در C#.NET میخوام بدونم

1- چه طوری یه record رو توی یه فایل بریزم و بخونم ؟(مثل ++C
2- چه طوری یه شیء رو توی یه فایل بریزم و بخونم ؟(مثل ++C)
3- چه طوری دو سوال بالا رو به صورت binary , ASCll انجام بدم؟
4- pointer خوندن نوشتن رو چهطوری تشخیص بدم و قرار بدم؟

خلاصه فایلها دیگه اگه PDF , E-Book ی چیزی هم بود عالی میشه


با تشکر
Woeful:11:

_H2_
24-11-2009, 15:44
سلام


1- چه طوری یه record رو توی یه فایل بریزم و بخونم ؟(مثل ++C

خواندن و نوشتن رکوردی در دات نت صددرصد امکان پذیر است ولی توابع اماده و ساده ندارد ...
در اصل با توجه به ظهور بانکهای اطلاعاتی تخصصی رابطه (مثل JET و SQLServer و Oracel و ...) دیگر نیازی به کار رکوردی نیست.
من خودم یادم نمی آید چندین سال پیش اخرین بار فایلی را رکوردی خواندم و نوشتم!

شما به سادگی میتوانید از یک فایل mdb یا mdf استفاده کنید و هر چه قدر هم سعی کنیدف نمیتوانید امکاناتی در حد mdb را هم خودتان کدنویسی کنید.
با همین mdb به ظاهر درپیت با یک خط SQL-SELECT-WHERE ساده راحت میتوان از تمام اطلاعات استعلام و امار و... گرفت که ساده ترین دستور SQL است.

مطلب بعدی هم ان است که امکانات سریالی باینری و XML دات نت خیلی قوی است و به راحتی میتوانید Collection ای از رکوردهایتان ایجاد کنید و کل Collection را یکجا در فایل سریالی یا دیسریالی کنید.

=====

بحرحال اگر بر کارکرد رکوردی واقعی مثل ++C اصرار دارید ...
پیشنهاد میکنم اسمبلی Microsoft.VisualBasic.dll استفاده کنید.
(Project->Add Reference->.Net)
برخلاف نامش استفاده اش در C#.Net هم مشکلی ندارد.
(
Microsoft.VisualBasic.dll شامل تعداد زیادی از توابع و دستورالعملهای قدیمی و بعضاً منسوخ شده است که برای راحتی VB6 کارهای قدیمی در VB.Net در این فایل گنجاده شده است.
)

در فضای نام Microsoft.VisualBasic.FileSystem میتوانید متدهای خواندن و نوشتن رکوردی فایلها را پیدا کنید.



2- چه طوری یه شیء رو توی یه فایل بریزم و بخونم ؟(مثل ++C)

تاجایی که یادم می آید برخلاف برداشتی که متان شما میشود، اینکار چندان هم در ++C ساده نبوده و هموراه با مشکلات خاص خود همراه بود !!!
ولی در دات نت خیلی راحت میتوانید از کلاس System.Runtime.Serialization.Formatters.Binary.Bin aryFormatter استفاده کنید.

متد Serialize شی شما را در یک Stream (فایل و شبکه و دانلود و حافظه و...) ذخیره میکند.
متد Deserialize هم برعکس متدقبلی شی شما را از یک Stream میخواند.



3- چه طوری دو سوال بالا رو به صورت binary , ASCll انجام بدم؟

اگر مقادیر متنی دارید که string است، هر کجا نیاز به تبدیل به آرایه بایتی باشد میتوانید از کدینگ های مختلف استفاده کنید:
System.Text.Encoding.ASCII
System.Text.Encoding.UTF8
System.Text.Encoding.Unicode
و...



4- pointer خوندن نوشتن رو چهطوری تشخیص بدم و قرار بدم؟

اگر فایل را به صورت Stream با کنید (کلاس System.IO.FileStream) خصیصه Position مکان نمای جاری داخل فایل خواهد بود که میتوانید بخوانید یا تغییرش دهید.