پرش به محتوای اصلی
مسیر تخصصی جاوا و Spring
درخواست پروژهتدریس خصوصیارتباط با ماراهنما
جاواپرو v1.2.17یاد بگیر، تمرین کن، حرفه‌ای بساز
خانهدوره‌هاآموزش رایگانوبلاگمدرس‌هاخدمات
خانهSerialization در زبان برنامه نویسی جاوا
آموزش برنامه نویسی »

Serialization در زبان برنامه نویسی جاوا

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

۱۱ دقیقه مطالعهآموزش برنامه نویسی »آموزش جاوا و انجام پروژه های برنامه نویسی
Serialization در زبان برنامه نویسی جاوا
محتوای منتخب جاواپرو

خلاصه مطلب

در این جلسه به مبحث Serialization در جاوا که کاربرد آن خواندن و نوشتن اشیا در فایل می باشد پرداخته شده است.
نوع محتوامقاله آموزشی
موضوعآموزش برنامه نویسی »
زمان مطالعه۱۱ دقیقه
آخرین ویرایش۹ اسفند ۱۴۰۲

فهرست جلسات دوره مقدماتی جاوا

مقدمه اول | جاوا چیست؟

مقدمه دوم | تاریخچه جاوا

مقدمه سوم | ویژگی‌های زبان جاوا

جلسه اول | راهنمای دانلود و نصب JDK

جلسه دوم | اجرای یک برنامه جاوا در Notepad

جلسه سوم | راهنمای دانلود و نصب Eclipse

جلسه چهارم | ساخت اولین برنامه جاوا در Eclipse

جلسه پنجم | متغیر ها در جاوا

جلسه ششم | تغییر فونت محیط Eclipse

جلسه هفتم | عملگر‌های پایه ای جاوا

جلسه هشتم | دستورات شرطی

جلسه نهم | اشیا و کلاس ها

جلسه دهم | ورودی گرفتن

جلسه یازدهم | حلقه‌های کنترلی

جلسه دوازدهم | کلمه کلیدی static

جلسه سیزدهم | کلاس Math

جلسه چهاردهم | کلاس String

جلسه پانزدهم | آرایه‌های یک بعدی

جلسه شانزدهم | کنترل سطح دسرسی (Modifiers)

جلسه هفدهم | متدها در جاوا

جلسه هجدهم | کلمه کلیدی this

جلسه نوزدهم | کلاس‌های داخلی

جلسه بیستم | ارث بری در جاوا

جلسه بیست و یکم | کلمه کلیدی final

جلسه بیست و دوم | Overriding در جاوا

جلسه بیست و سوم | Polymorphism( چند ریختی)

جلسه بیست و چهارم | چندریختی را بهتر یادبگیرید

جلسه بیست و پنجم | Abstraction( انتزاع)

جلسه بیست و ششم | Encapsulation(کپسوله سازی)

جلسه بیست و هفتم | اینترفیس (Interface)

جلسه بیست و هشتم | کلاس Random

جلسه بیست و نهم | Exceptions (استثناها)

جلسه سی ام | کار با فایل در جاوا(Files and I/O)

جلسه سی و یکم | کلاس InputStreamReader

جلسه سی و دوم | کلاس OutputStreamWriter

جلسه سی و سوم | کلاس BufferedReader

جلسه سی و چهارم | کلاس BufferedWriter

جلسه سی و پنجم | Serialization در جاوا

جلسه سی و ششم | چندنخی(Multithreading)

جلسه سی و هفتم | آرایه دو بعدی در جاوا

جلسه سی و هشتم | کلاس ArrayList در جاوا

جلسه سی و نهم | Non Access Modifier در جاوا

دوره رایگان مقدماتی زبان جاوا
دوره رایگان مقدماتی زبان جاوا

لیست تمامی دوره های آموزش زبان برنامه نویسی جاوا[کــلیک کنید

خب اولین سوالی که در مورد مفهوم Serialization در جاوا برامون پیش میاد اینه که اصلا چی هست و کاربردش چیه؟!!!

Serialization مکانیزمی برای نوشتن و ذخیره شی در فایل می باشد.

ما تا اینجا با روش نوشتن و ذخیره داده های کاراکتری،رشته ای،عدد صحیح و... در فایل آشنا شدیم در این اموزش قصد داریم روش ذخیره و نوشتن یک شی در فایل به زبان جاوا را بررسی کنیم. همچنین در ادامه به روش خواندن یک شی از فایل می پردازیم.

صرفا جهت یادگیری:

عمده استفاده از Serialization در تکنولوژی های Hibernate، RMI، JPA، EJB و JMS در جاوا می باشد.

این تکنولوژی ها چی هستند و کاربردشون چیه رو کامل فراموش کنید بریم سراغ اصل مطلب یعنی Serialization.

Serialization

در Serialization همان طور که گفتیم یک شی را می توانیم در یک فایل ذخیره کنیم. چگونه ؟! Serialization برای این کار شی ما را به جریانی (stream) از byte ها تبدیل کرده و در فایل ذخیره می کند. تصویر(1) را ببینید:

آموزش ذخیره کردن اشیا در فایل به زبان جاوا
آموزش ذخیره کردن اشیا در فایل به زبان جاوا

ی لحظه یک نفس عمیق بکشید!!!! کامل پشت پرده این که چطور یک شی را در فایل ذخیره می کنیم رو بی خیال شید!!! تنها اینو بدونید که مفهوم Serialization به ما کمک می کند که یک شی از نوع یک کلاس با تمام ویژگی ها و حالت هایی که دارد را مستقیم در یک فایل ذخیره کنیم. :-)

خب در زیر گام هایی که برای ذخیره یک شی در فایل بر می داریم رو بررسی می کنیم:

گام اول:

اینترفیس Serializable :

کلاسی که قصد داریم از آن شی ایجاد کنیم و شی ایجاد شده را در یک فایل ذخیره کنیم را باید implements به اینترفیس Serializable کنیم. به این کار اصطلاحا mark دار ( نشانه دار) کردن کلاسی که قصد داریم شی ای از نوع آن را در یک فایل ذخیره کنیم می گویند.

✔ برای implements کردن اینترفیس Serializable در کلاس خود باید پکیج java.io.Serializable را در برنامه خود import کنیم.

import java.io.Serializable;

✔ اینترفیس Serializable اینترفیسی است که متد و اعضایی ندارد.

public abstract interface java.io.Serializable { }

نتیجه گیری :

✔ در کل هر کلاسی که قصد داریم شی ای از آن در یک فایل ذخیره کنیم را باید implements به اینترفیس Serializable ، کنیم.پس شی از نوع هر کلاسی را نمی توانیمدر یک فایل ذخیره کنیم ، تنها اشیایی را می توانیم در فایل ذخیره کنیم که مجوزهای لازمیعنی پیاده سازی اینترفیس Serializable در کلاس آنها صورت گرفته باشد! :-) کهاین کار mark دار کردن کلاس می گویند.

مثال: فرض کنید قصد داریم شی ای از کلاس Student را در یک فایل ذخیره کنیم، برای این کار ابتدا باید کلاس Student را implements به اینترفیس Serializable ،کنیم. یا کلاس Student را به اصلاح mark دار کنیم: :-)

package www.javapro.ir; import java.io.Serializable; public class Student implements Serializable{ }

✔ خب دیگه اشیایی که از نوع کلاس Student هستند ، مجوز این که در فایل ذخیره شوند را دریافت کرده اند.

✔ با این کار اشیای نوع کلاس Student به راحتی می توانند به جریانی (stream) از byte ها برای ذخیره در فایل تبدیل شوند.

آموزش مفصل و کامل ویدئویی کار بافایل و Serialization در دوره آموزش پیشرفته جاوا آکادمی جاواپرو [کلیک کنید]

گام دوم :

کلاس ObjectOutputStream :

در جلسات قبل برخی از کلاس های کار با فایل در جاوا را بررسی کردیم ، کارایی اون کلاس ها تنها برای خواندن و نوشتن داده های اولیه نظیر بایت ها، رشته ها و... بود. حالا در این جلسه قصد داریم کلاس ObjectOutputStream که کاربرد آن برای نوشتن و ذخیره اشیا در فایل می باشد را بررسی کنیم.

برای استفاده از کلاس ObjectOutputStream در برنامه خود باید پکیج java.io.ObjectOutputStream را import کنیم.

import java.io.ObjectOutputStream;

💡 برای نوشتن و ذخیره یک شی در فایل باید از کلاس ObjectOutputStream شی ایجاد کنیمو از طریق شی ایجاد شده به متد هایی که در زمینه ذخیره شی در فایل کاربرد دارد دسرسی پیدا کنیم.

💡 تنها اشیایی حق دارند در فایل ذخیره شوند که کلاس های آنها implements به اینترفیس Serializable شده باشند.

سازنده کلاس ObjectOutputStream :

public ObjectOutputStream(OutputStream out)

✔ یکی از سازنده های پر کاربردی که هنگام شی سازی از کلاس ObjectOutputStream صدا زده می شود.

✔ این سازنده به عنوان پارامتر یک شی از نوع کلاس OutputStream دریافت می کند که حاویآدرس مکانی است که قراره در آن فایل ایجاد شود.

دو متد مهم کلاس ObjectOutputStream :

1.

public final void writeObject(Object obj){} throws IOException

• این متد برای ذخیره و نوشتن شی در فایل استفاده می شود.

• به جای پارامتر obj که از نوع کلاس Object (پدر همه کلاس ها) هستش ، می توان شی مورد نظر خود را قرار دهیم.

• استفاده از این متد ممکنه باعث رخ دادن استثنای مربوطه شود ،پس باید استثنای آن را کنترل کنیم.

2.

public void close() throws IOException {}

✔ این متد نیز برای بستن فایل مورد نظر می باشد.

✔ خب تا اینجا با شرایط و عملیاتی که از طریق آنها می توانیم یک شی را در یک فایل ذخیره کنیم آشنا شدیم:

1. کلاسی که شی آن قراره در فایل ذخیره شود باید به اینترفیس Serializable ، implements شود. 2. استفاده از کلاس ObjectOutputStream برای ذخیره اشیا در فایل.

مثال: در مثال زیر تمامی مفاهیمی که از ابتدای این جلسه تا اینجا را بررسی کردیم را بهش خواهیم پرداخت،پس اصلا نگران نباشید اگه توضیحات روشن نبود به مثال زیر خوب دقت کنید: :-)

import java.io.Serializable; public class Student implements Serializable{ int id; String name; public Student(int id, String name) { this.id = id; this.name = name; } }

• در مثال بالا ما کلاس Student را به اینترفیس Serializable ، implements کرده ایم. با این کار کلاس Student به اصلاح mark دار شده و اشیای ان اجازه خواهند داشت در فایل ذخیره شوند.

• خب کلاس Student سری ویژگی و یک سازنده داره که این ویژگی ها رو مقداردهی می کند.

حال در کلاس Persist قصد داریم از کلاس Student شی بسازیم و شی ان را در یک فایل ذخیره کنیم:

import java.io.*; class Persist{ public static void main(String args[]) throws Exception{ Student s1 =new Student(211,"ravi"); FileOutputStream fout=new FileOutputStream("f.txt"); ObjectOutputStream out=new ObjectOutputStream(fout); out.writeObject(s1); out.close(); System.out. print ln("success"); } }

خروجی: وقتی کلاس های Student و Persist را با هم کامپایل و اجرا کنیم خروجی بصورت زیر خواهد بود:

1. در کامپیوتر پوشه پروژمون یک فایل با نام و فرمت f.txt ایجاد می شود که حاوی یک شی از نوع کلاس Student می باشد. فایل f.txt که در پوشه پروژمون ایجاد شده را در تصویر(2) مشاهده می کنید:

ذخیره شی از یک کلاس در فایل
ذخیره شی از یک کلاس در فایل

💡 در تصویر(2) انگار فایلمون مثل همیشه نیست!!! و یک تفاوت هایی با فایل های قبلی که درونشونداده های متنی و عددی بود داره!! بله فایل هایی که درون آنها یک شی ذخیره می شود ، محتویات انهارا نمیشه دید!! و وقتی این گونه فایلهارا باز می کنیم با سری اطلاعات ظاهرا درهم بر همبرخورد می کنیم ( رنگ سبزه درون تصویر(2) ). این گونه فایل ها را فقط از طریقبرنامه و دستورات مربوطه می شود خواند و با چشم بصیرت تنها می شود دید :-)

2. در خروجی کنسول نیز پیام زیر مبنی بر موفق بودن عملیات ایجاد فایل نمایش داده می شود:

success

نکته بسیار مهم : وقتی یک شی در یک فایل ذخیره می شود ، تمام ویژگی و حالات شی نیز در فایل حفظ و ذخیره می شود. مثلا در این مثال شی s1 که از نوع Student هستش دو ویژگی name و id آن که به ترتیب “ravi” و 211 می باشد ،هنگام ذخیره سازی شی s1 در فایل f.txt تمام این دو ویژگی در فایل ذخیره و حفظ می شود.

توضیحات:

• کلاس Student را که از قبل توضیح داده ایم.از آنجایی که قصد داریم شی از نوع این کلاس را در فایل ذخیره کنیم باید حتما کلاس Student به اینترفیس Serializable ، implements شود.

• کلاس Persist در متد main ان یک شی با نام s1 از کلاس Student ایجاد کرده و سازنده ان را مقداردهی کرده ایم.

Student s1 =new Student(211,"ravi");

• برای نوشتن یک شی در فایل باید از کلاس ObjectOutputStream شی ایجاد کنیم. هنگام شی سازی از این کلاس ، نیاز هست که پارامتر سازنده آن را مقدار دهی کنیم.همان طور که از قبل گفتیم نوع پارامتر سازنده کلاس ObjectOutputStream از نوع کلاس OutputStream هستش ، از آنجایی که کلاس OutputStream یک کلاس abstract (انتزاعی) هستش، نمی توان از ان شی ایجاد کنیم پس تنها راهی که می ماند از یکی از فرزندان کلاس OutputStream شی ساخته و جایگزین پارامتر درون سازنده کلاس OutputStream کنیم.

• پس همان طور که در زیر می بینید از کلاس FileOutputStream که فرزند کلاس OutputStream هستش شی ای با نام fout ساخته و درون سازنده کلاس ObjectOutputStream ریخته ایم.

• آدرس "f.txt" ، ادرس محل ذخیره فایل در کامپیوتر که در اینجا پوشه پروژمون می باشد.

• f نام فایل و txt فرمت فایل ما می باشد.

• شی ما در این فایل ذخیره می شود.

FileOutputStream fout=new FileOutputStream("f.txt"); ObjectOutputStream out=new ObjectOutputStream(fout);

• در این خط شی s1 که از نوع کلاس Student هستش با استفاده از متد writerObject در فایل ذخیره می شود. به همین راحتی! :-)

out.writeObject(s1);

• تنها اشیایی حق دارند در فایل ذخیره شوند که کلاس های آنها اینترفیس Serializable را implemets کرده باشند.

در پایان با استفاده از متد close فایل out را می بندیم و حالا یک پیامم چاپ میکنیم که یعنی عملیات با موفق بوده است :-)

out.close(); System.out. print ln("success");

Deserialization در جاوا

Deserialization عکس عملیات و مفهوم serialization می باشد. Deserialization جهت بازسازی و خواندن اشیا از فایل می باشد. در Deserialization جریان بایت های ذخیره شده در فایل به شی تبدیل می شود. تصویر(3)

خواندن اشیا از فایل در جاوا
خواندن اشیا از فایل در جاوا

کلاس ObjectInputStream :

• این کلاس همان طور که از اسمش پیداست برای خواندن شی ذخیره شده در فایل می باشد.

• برای استفاده از کلاس ObjectInputStream باید پکیج java.io.ObjectInputStream را در برنامه خود import کنیم:

import java.io.ObjectInputStream;

...ادامه این جلسه آموزشی را می توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.

آموزش آسان و ساده زبان برنامه نویسی جاوا
آموزش آسان و ساده زبان برنامه نویسی جاوا

این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید) لینک دانلود

مشاهده لینک اصلی
تصویر مرتبط با Serialization در زبان برنامه نویسی جاوا
مشاهده لینک اصلی
تصویر مرتبط با Serialization در زبان برنامه نویسی جاوا
عضو کانال تلگرام
برچسب‌هاآموزش برنامه نویسی »آموزش زبان جاوا »آموزش جاوا »مفهوم Serialization در جاواآموزش Serializationآموزش Serialization در جاواکاربرد Serializationاینترفیس Serializableکاربرد Serializableآموزش SerializableSerializable در جاواکلاس ObjectOutputStreamکلاس ObjectOutputStream در جاواکاربرد ObjectOutputStreamکاربرد writeObject
دسترسی سریع

فهرست مطلب

۱فهرست جلسات دوره مقدماتی جاوا۲مقدمه اول | جاوا چیست؟۳مقدمه دوم | تاریخچه جاوا۴مقدمه سوم | ویژگی‌های زبان جاوا۵جلسه اول | راهنمای دانلود و نصب JDK۶جلسه دوم | اجرای یک برنامه جاوا در Notepad۷جلسه سوم | راهنمای دانلود و نصب Eclipse۸جلسه چهارم | ساخت اولین برنامه جاوا در Eclipse۹جلسه پنجم | متغیر ها در جاوا۱۰جلسه ششم | تغییر فونت محیط Eclipse۱۱جلسه هفتم | عملگر‌های پایه ای جاوا۱۲جلسه هشتم | دستورات شرطی۱۳جلسه نهم | اشیا و کلاس ها۱۴جلسه دهم | ورودی گرفتن۱۵جلسه یازدهم | حلقه‌های کنترلی۱۶جلسه دوازدهم | کلمه کلیدی static۱۷جلسه سیزدهم | کلاس Math۱۸جلسه چهاردهم | کلاس String۱۹جلسه پانزدهم | آرایه‌های یک بعدی۲۰جلسه شانزدهم | کنترل سطح دسرسی (Modifiers)۲۱جلسه هفدهم | متدها در جاوا۲۲جلسه هجدهم | کلمه کلیدی this۲۳جلسه نوزدهم | کلاس‌های داخلی۲۴جلسه بیستم | ارث بری در جاوا۲۵جلسه بیست و یکم | کلمه کلیدی final۲۶جلسه بیست و دوم | Overriding در جاوا۲۷جلسه بیست و سوم | Polymorphism( چند ریختی)۲۸جلسه بیست و چهارم | چندریختی را بهتر یادبگیرید۲۹جلسه بیست و پنجم | Abstraction( انتزاع)۳۰جلسه بیست و ششم | Encapsulation(کپسوله سازی)۳۱جلسه بیست و هفتم | اینترفیس (Interface)۳۲جلسه بیست و هشتم | کلاس Random۳۳جلسه بیست و نهم | Exceptions (استثناها)۳۴جلسه سی ام | کار با فایل در جاوا(Files and I/O)۳۵جلسه سی و یکم | کلاس InputStreamReader۳۶جلسه سی و دوم | کلاس OutputStreamWriter۳۷جلسه سی و سوم | کلاس BufferedReader۳۸جلسه سی و چهارم | کلاس BufferedWriter۳۹جلسه سی و پنجم | Serialization در جاوا۴۰جلسه سی و ششم | چندنخی(Multithreading)۴۱جلسه سی و هفتم | آرایه دو بعدی در جاوا۴۲جلسه سی و هشتم | کلاس ArrayList در جاوا۴۳جلسه سی و نهم | Non Access Modifier در جاوا
ادامه مسیر

پیشنهاد جاواپرو

موضوع را با آموزش‌های مرتبط ادامه دهید و نکته‌های کاربردی را در مسیر خود نگه دارید

مشاهده دوره‌ها
مطالب پیشنهادی

ادامه مطالعه

xدسته‌بندی نشده
۱۱ دی ۱۳۹۸ مطالعه کوتاه

x

پادکست شماره 3 – راه های کسب درآمد از برنامه نویسی

مطالعه مطلب
پادکست شماره 3 - راه های کسب درآمد از برنامه نویسیپادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 3 - راه های کسب درآمد از برنامه نویسی

در این پادکست برنامه نویسی به شیوه ها و راه های کسب درآمد از برنامه نویسی پرداخته ایم. یک کاغذ و قلم بردارید و به پادکست گوش بدید.

مطالعه مطلب
پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟پادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟

در این پادکست برنامه نویسی یاد میگیریم که چگونه وارد فضای برنامه نویسی شویم و تخصص برنامه نویسی را به دست آوریم.

مطالعه مطلب
جاواپرومرجع تخصصی یادگیری و توسعهٔ جاوا

تجربه‌ای منظم، ساده و حرفه‌ای برای یادگیری عمیق جاوا، Spring و مهندسی نرم‌افزار؛ قابل استفاده در موبایل، تبلت و دسکتاپ

یادگیری

همه دوره‌هاآموزش رایگانمسیر یادگیریمدرس‌ها

جاواپرو

درباره ماخدمات تخصصیدرخواست پروژهتدریس خصوصیبلاگ فنی

پشتیبانی

تماس با ماپرسش‌های متداولقوانین و حریم خصوصیبروزرسانی‌های جاواپروثبت تیکت
خرید امنپرداخت فقط در درگاه رسمیپشتیبانی آموزشیمسیر ارتباط شفاف و پیگیری‌پذیردسترسی پایداروب‌اپ واکنش‌گرا روی همه دستگاه‌ها
© ۱۴۰۵ جاواپرو؛ همه حقوق محفوظ استتوسعه توسط پایاپینگ
خانهدوره‌هاسبد