مفهوم الملفات النصية File
الملفات النصية ( Files ) تعتبر البيانات النصية هي إحدى الأدوات المستخدمة لتخزين البيانات بشكل دائم, مثل المفكرة. أو ملفات txt أي مستند نصي يسمى ملف نصي و نعمل له حفظ يبقى موجود في الحاسب لفترة طويلة.
اليوم سنتعلم كيفية إنشاء ملفات نصية من داخل برنامج الجافا و كيفية الكتابة داخل هذا الملف النصي.
يعتبر الملف النصي هو أحد الوسائل المستخدمة لتخزين البيانات النصية الدائمة, سنتعلم على كيفية إنشاء الملف النصي. و كتابة جملة بسيطة بداخله. و كيفية القراءة من الملف النصي و كيفية إضافة بيانات بشكل اكثر و التعامل مع الملفات النصية بإحتراف. للتعامل مع الملفات النصية يجب أن نستخدم الحزمة io كالتالي
import java.io.FileWriter
و المقصود في io هي المصطلح input output, هذه المكتبة نستخدمها لإنشاء ملفات نصية و الكتابة داخلها و قراءة البيانات و التعامل مع الملفات النصية.
الكتابة على الملف النصي
تتم الكتابة على الملفات النصية في لغة جافا عن طريق إستخدام FileOutputStream حيث يتم إنشاء الملف النصي. في حال أنه غير موجود ومن ثم الكتابة عليه أو الكتابة عليه بشكل مباشر في حال وجوده.
package ioo; import java.io.FileWriter; class Ioo { public static void main(String[] args) { try{ FileWriter fw=new FileWriter("E: nusurtech.txt"); fw.write("Muhammad and badria and amer"); fw.close(); }catch(Exception e) {System.out.println(e.getMessage());} } }
في البداية إستدعينا الحزمة io عبر الأمر "import java.io.FileWriter" ثم دخلنا للبرنامج الرئيسي و حددنا مسار الملف عبر الكلاس FileWriter. و كان مسار الحفظ في قرص D ثم قمنا بالكتابة داخل الملف عن طريق الدالة write عبر الكائن fw ثم أغلقنا الملف عبر fw.close و وضعنا الكود ما بين إستثناء try و catch. و في حال حدوث خطأ يطبع لنا الإستثناء الذي حصل.
القراءة من الملف النصي
القراءة read من الملف النصي سوف نستخدم حزمة اخرى غير السابقة لتمكننا من القراءة من الملف النصي. (نستخدم هذه الحزمة فقط عندما نريد القراءة من ملف نصي) و تكتب بالشكل.
import java.io.FileReader
مثال
package ioo; import java.io.FileReader; public class Ioo { public static void main(String[] args) { try{ FileReader fr=new FileReader("E: nusurtech.txt"); int i; while((i=fr.read())!=-1) System.out.print((char)i); }catch(Exception e) {} } }
في هذا المثال إستخدمنا لقراءة الملف حزمة FileReader و إستخدمنا الكلاس FileReader ليمكننا من القراءة من الملف. ثم أنشأنا كائن fr و حددنا مسار الملف في قرص E. و قمنا بإنشاء متغير أسميناه i يقوم بتحديد موقع الحرف عن طريق الدالة fr.read() و الدالة طالما تقرأ بيانات سوف تبقى تعيد قيمة غير 1-. عندما لا تجد بيانات و تنتهي من قراءة الملف, و هذا هو شرط الوقوف من اللوب يعني إستمر في القراءة طالما القيمة لا تساوي -1. بعد ذلك قمنا بطباعة البيانات الذي حصلنا عليها و قمنا بتحوير موقع الحرف إلى بيانات نصية ثم طبعناها.
مثال تطبيقي لدرس المصفوفات و الملفات النصية
package ioo; import.java.io.BufferedWriter; #خاص باضافة البيانات الى الملف import.java.io.File; #خاصة بانشاء الملف و تحديد مسار الملف import.java.io.FileWriter; #للكتابة داخل الملف import.java.io.IOExeption; #تستخدم لاصطياد الاخطاء غير المتعمدة public class Ioo { public static void main(String[] args) { String []st_no={"1","2","3","4"}; String []st_name={"DATA","AMVIIP","amer","wazeer"}; File f=new File("E: nusurtech.txt"); try{ BufferedWriter w=new BufferedWriter(new FileWriter(f)); for(int i=0;i < st_no.length;i++) { w.write(st_no[i]); w.write(" "); w.write(st_name[i]); w.newLine(); } w.close(); }catch(IOExeption e) {} } }
في البداية إستخدمنا اربع حزم في هذا المثال و هي الحزمة io.BufferedWriter و هي خاصة بإضافة البيانات إلى الملف و الحزمة io.File خاصة بإنشاء الملف و تحديد مساره. و الحزمة io.FileWriter من أجل الكتابة بداخل الملف و الحزمة io.IOExeption من أجل إصطياد الأخطاء غير المعتمدة. ثم دخلنا بالبرنامج الرئيسي و أنشأنا مصفوفة إسمها st_no من أجل تعريف أرقام اربع طلاب و أنشأنا مصفوفة ثانية st_name لأجل أسماء الطلاب الأربع.
الملفات في لغة جافاثم بدأنا بإنشاء الملف عبر الكلاس File و اعطيناه كائن object إسمه f ثم حددنا مساره و إسمه. و بعده ضمننا الحزمة BufferedWriter و اعطيناها كائن إسمه w ثم إستخدمنا الكلاس FileWriter و أرسلنا. إليه الكائن f الخاص بالملفات و وضعناهم ضمن try و catch كـ خيار إجباري لتجنب حدوث اي خطأ. و ادخلناه بحلقة for لوب و بدأنا بعملية كتابة البيانات للملف عن طريق الكائن w الذي يتبع للكلاس BufferedWriter. و بعده انشأنا القيم عبر w.write إلى أن ينتهي اللوب و يساوي طول المصفوفة و إستخدمنا. الدالة newLine لينزل سطر عند الإنتهاء من كل دورة ثم اغلقنا الملف عبر w.close.