Javaالكلاس Properties
في جافا
- مقدمة
- كونستركتورات الكلاس
Properties
- دوال الكلاس
Properties
- أمثلة شاملة
مقدمة
الكلاس Properties
يرث من الكلاس Hashtable
و هو يستخدم أيضاً لتخزين العناصر بشكل Key / Value.
بما أنه يرث من الكلاس Hashtable
, فهذا يعني أنه يملك جميع الدوال الموجودة فيه.
الفرق الأساسي بين الكلاس Properties
و الكلاس Hashtable
هو أن الكلاس Properties
يمكنه تخزين Keys و Values فقط من النوع String
.
بالإضافةً إلى أن الكلاس Properties
يحتوي على دوال جاهزة للتعامل مع الملفات.
كونستركتورات الكلاس Properties
الجدول التالي يحتوي على جميع الكونستركتورات الموجودين في الكلاس Properties
.
الكونستركتور مع تعريفه | |
---|---|
1 | public Properties()
هذا الكونستركتور الإفتراضي في الكلاس Properties , يستخدم لإنشاء كائن نوعه Properties . |
2 | public Properties(Properties defaultProperty)
يستخدم هذا الكونستركتور لإنشاء كائن نوعه Properties يملك عناصر مسبقة من كائن الـ Properties الذي نمرره كـ Argument.سيتم اللجوء إلى الكائن defaultProperty عند البحث عن قيمة مفتاح غير موجود في كائن الـ Properties . |
دوال الكلاس Properties
الجدول التالي يحتوي على جميع دوال الكلاس Properties.
الدالة مع تعريفها | |
---|---|
1 | public String getProperty(String key)
ترجع قيمة المفتاح الذي نمرره لها كـ Argument.في حال كان كائن الـ Properties لا يحتوي على المفتاح الذي مررناه لها, ترجع القيمة null .ملاحظة: في حال كان كائن الـ Properties يملك كائن Properties إفتراضي يحتوي على المفتاح المطلوب و الذي لم يتم العثور عليه في كائن الـ Properties الذي قام باستدعائها, عندها سيتم إرجاع قيمته التي تم إيجادها في كائن الـ Properties الإفتراضي. |
2 | public String getProperty(String key, String defaultProperty)
ترجع قيمة المفتاح الذي نمرره لها مكان الباراميتر key .في حال كان كائن الـ Properties لا يحتوي على المفتاح الذي مررناه لها, ترجع قيمة الـ defaultProperty. |
3 | public void(PrintStream streamOut)
تنسخ محتوى كائن الـ Properties بالكامل في الملف الذي يشير له كائن الـ PrintStream .تنسخ محتوى كائن الـ Properties الإفتراضي أيضاً. |
4 | public void(PrintWriter streamOut)
تنسخ محتوى كائن الـ Properties بالكامل في الملف الذي يشير له كائن الـ PrintWriter .تنسخ محتوى كائن الـ Properties الإفتراضي أيضاً. |
5 | public void load(InputStream streamIn) throws IOException
تنسخ محتوى الملف الذي يشير له كائن الـ InputStream في كائن الـ Properties . |
6 | public Enumeration propertyNames()
ترجع كائن نوع Enumeration يحتوي على جميع مفاتيح كائن الـ Properties . |
7 | public Object setProperty(String key, String value)
تستخدم لتبديل قيمة عنصر معين من عناصر كائن الـ Properties من خلال مفتاحه.و هي ترجع قيمة المفتاح القديمة, أو ترجع null في حال كان الـ key الموضوع غير موجود و عندها سيتم إضافة الـ key و الـ value كعنصر جديد في كائن الـ Properties .الباراميتر key هو المفتاح الذي سيتم تبديل قيمته.الباراميتر value هو القيمة الجديدة التي ستعطى للمفتاح. |
8 | public void store(OutputStream streamOut, String comments)
تنسخ محتوى الـ Properties بالكامل في الملف الذي يشير له كائن الـ OutputStream . مع إضافة تعليقات فوق المحتوى.تنسخ محتوى الـ Properties الإفتراضي أيضاً.الباراميتر comments عبارة عن التعليقات التي سيتم إضافتها فوق محتوى كائن الـ Properties . |
9 | public void store(Writer streamOut, String comments)
تنسخ محتوى الـ Properties بالكامل في الملف الذي يشير له كائن الـ Writer , مع إضافة تعليقات فوق المحتوى.تنسخ محتوى الـ Properties الإفتراضي أيضاً.الباراميتر comments عبارة عن التعليقات التي سيتم إضافتها فوق محتوى كائن الـ Properties . |
أمثلة شاملة
في كل مثال موضوع استخدامنا كونستركتور مختلف و دوال جديدة.
المثال الأول
في المثال التالي قمنا بتعريف كائن نوعه Properties
, إسمه h
, ثم أدخلنا فيه 12 عنصر.
بعدها قمنا بتخزين جميع المفاتيح في كائن نوعه Enumeration
, إسمه keys
.
و قمنا أيضاً بتخزين جميع القيم في كائن نوعه Enumeration
, إسمه values
.
بعدها عرضناهم كجدول يتألف من عامودين من خلال الحلقة while
.
في الأخير قمنا بالبحث عن قيمة مفتاحين, واحد موجود و آخر غير موجود في الكائن الـ h
.
import java.util.Properties; // Properties هنا قمنا باستدعاء الكلاس import java.util.Enumeration; // Enumeration هنا قمنا باستدعاء الكلاس public class Main { public static void main(String[] args) { // و الذي سنضع فيه كود البلد و إسمه p إسمه Properties هنا قمنا بتعريف كائن نوعه Properties p = new Properties(); // كل عنصر يحتوي على كود البلد كمفتاح و إسمه كقيمة .h هنا قمنا بإضافة 12 عنصر في الكائن p.put("+961", "Lebanon"); p.put("+962", "Jordan"); p.put("+963", "Syria"); p.put("+964", "Iraq"); p.put("+965", "Kuwait"); p.put("+966", "KSA"); p.put("+967", "Yaman"); p.put("+968", "Oman"); p.put("+970", "Palestine"); p.put("+212", "Morocco"); p.put("+281", "Libya"); p.put("+20", "Egypt"); // أي وضعنا اكواد البلاد فيه .keys بداخل الكائن p هنا قمنا بتخزين جميع مفاتيح الكائن Enumeration keys = p.keys(); // أي وضعنا أسماء البلاد فيه .values بداخل الكائن p هنا قمنا بتخزين جميع قيم الكائن Enumeration values = p.elements(); System.out.println("The table below contains all Codes & Countries \n"); System.out.println("---------------------"); System.out.println("Code \t | Country"); System.out.println("---------------------"); // ليس فارغاً. الفكرة هنا المرور على جميع المفاتيح الموجودة و عرض كل مفتاح موجود و قيمته keys هنا أنشأنا حلقة تستمر في تكرار نفسها طالما أن الكائن while( keys.hasMoreElements() ) { System.out.println(keys.nextElement() + "\t | " + values.nextElement()); } System.out.println("---------------------\n"); // KSA هنا قمنا بالبحث عن إسم البلد الذي يملك الكود 996+ فكان الجواب System.out.println("Which Country use the code +966 ?"); System.out.println(p.getProperty("+966", "Code not found!")); // +لأنها القيمة التي وضعناها في حال عدم إيجاد الكود 123 Code not found! هنا قمنا بالبحث 123 إسم البلد الذي يملك الكود 123+ فكان الجواب System.out.println(); System.out.println("Which Country use the code +123 ?"); System.out.println(p.getProperty("+123", "Code not found!")); } }
سنحصل على النتيجة التالية عند التشغيل.
The table below contains all Codes & Countries --------------------- Code | Country --------------------- +281 | Libya +966 | KSA +965 | Kuwait +964 | Iraq +963 | Syria +962 | Jordan +961 | Lebanon +212 | Morocco +20 | Egypt +970 | Palestine +968 | Oman +967 | Yaman --------------------- Which Country use the code +966 ? KSA Which Country use the code +123 ? Code not found!
المثال الثاني
في المثال التالي قمنا بتعريف كائن نوعه Properties
, إسمه defaultNumbers
, ثم أدخلنا فيه 10 عناصر.
بعدها قمنا بتعريف كائن آخر نوعه Properties
, إسمه, ثم أدخلنا فيه أيضاً 10 عناصر.
الكائن arabicNumbers
يستخدم الكائن defaultNumbers
كـ Properties
إفتراضي.
في الأخير قمنا بالبحث في الكائن arabicNumbers
عن مفتاحين, واحد يملكه و الآخر يملكه إفتراضياً.
import java.util.Properties; // Properties هنا قمنا باستدعاء الكلاس public class Main { public static void main(String[] args) { // و الذي سنضع فيه الأرقام باللغة الإنكليزية defaultNumbers إسمه Properties هنا قمنا بتعريف كائن نوعه Properties defaultNumbers = new Properties(); // defaultNumbers هنا قمنا بإضافة 10 عناصر في الكائن defaultNumbers.put("0", "Zero"); defaultNumbers.put("1", "One"); defaultNumbers.put("2", "Two"); defaultNumbers.put("3", "Three"); defaultNumbers.put("4", "Four"); defaultNumbers.put("5", "Five"); defaultNumbers.put("6", "Six"); defaultNumbers.put("7", "Seven"); defaultNumbers.put("8", "Eight"); defaultNumbers.put("9", "Nine"); // و الذي سنضع فيه الأرقام باللغة العربية arabicNumbers إسمه Properties هنا قمنا بتعريف كائن نوعه // عند الحاجة له defaultNumbers هذا الكائن يستخدم الكائن Properties arabicNumbers = new Properties(defaultNumbers); // arabicNumbers هنا قمنا بإضافة 10 عناصر في الكائن arabicNumbers.put("٠", "صفر"); arabicNumbers.put("١", "واحد"); arabicNumbers.put("٢", "إثنان"); arabicNumbers.put("٣", "ثلاثة"); arabicNumbers.put("٤", "أربعة"); arabicNumbers.put("٥", "خمسة"); arabicNumbers.put("٦", "ستة"); arabicNumbers.put("٧", "سبعة"); arabicNumbers.put("٨", "ثمانية"); arabicNumbers.put("٩", "تسعة"); // defaultNumbers عن رقم موجود فيه و رقم آخر حصل عليه من الكائن arabicNumbers هنا قمنا بالبحث في الكائن System.out.println(arabicNumbers.getProperty("1")); System.out.println(arabicNumbers.getProperty("١")); } }
سنحصل على النتيجة التالية عند التشغيل.
One واحد
المثال الثالث
في المثال التالي قمنا بتعريف كائن نوعه Properties
, إسمه names
, الهدف منه تخزين الأسماء بالإنجليزية و العربية, ثم أدخلنا فيه 5 عناصر.
في الأخير قمنا بالبحث في نسخ محتوى الكائن names
في ملف جديد إسمه ar-en-names.txt
.
import java.io.IOException; // IOException هنا قمنا باستدعاء الكلاس import java.io.PrintWriter; // PrintWriter هنا قمنا باستدعاء الكلاس import java.util.Properties; // Properties هنا قمنا باستدعاء الكلاس public class Main { public static void main(String[] args) { // و الذي سنضع فيه الأٍسماء بالإنجليزية و العربية names إسمه Properties هنا قمنا بتعريف كائن نوعه Properties names = new Properties(); // names هنا قمنا بإضافة 5 عناصر في الكائن names.put("Ahmad" , "أحمد"); names.put("Ibrahim", "إبراهيم"); names.put("Samer" , "سامر"); names.put("Hala" , "هالة"); names.put("Rana" , "رنا"); try { // لإنشاء ملف و الكتابة فيه لاحقاً FileWriter هنا قمنا بإنشاء كائن نوعه PrintWriter fw = new PrintWriter("C:\\Users\\Mhamad\\Desktop\\ar-en names.txt"); // fw في الملف الذي يشير له الكائن names هنا قمنا بنسخ محتوى الكائن names.list(fw); // هنا قمنا بإغلاق إتصال البرنامج مع الملف و تنظيف الذاكرة fw.flush(); fw.close(); } // لإلتقاط أي خطأ قد يحدث بسبب الملف catch هنا وضعنا الجملة catch(IOException e){ System.out.println("There is IOException!"); } } }
بعد تشغيل البرنامج, قم بفتح الملف ar-en-names.txt
و ستجد النص التالي بداخله التالية.
--ing properties -- Ibrahim=إبراهيم Samer=سامر Rana=رنا Hala=هالة Ahmad=أحمد