Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

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.

Main.java
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!"));
}
}
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!
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 عن مفتاحين, واحد يملكه و الآخر يملكه إفتراضياً.

Main.java
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("١"));
}
}
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
واحد
One واحد


المثال الثالث

في المثال التالي قمنا بتعريف كائن نوعه Properties, إسمه names, الهدف منه تخزين الأسماء بالإنجليزية و العربية, ثم أدخلنا فيه 5 عناصر.

في الأخير قمنا بالبحث في نسخ محتوى الكائن names في ملف جديد إسمه ar-en-names.txt.

Main.java
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!");
}
}
}
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=أحمد
--ing properties -- Ibrahim=إبراهيم Samer=سامر Rana=رنا Hala=هالة Ahmad=أحمد