هلا والله شباب ، أول شي I/O موضوع كبير ومتشعب وانا ماعرف فيه كثير ،
مهمتي في هذا الموضوع شرح كيفية القرائه والكتابه من الملفات ببرنامج عادي
أي أننا لن نتطرق إلى , DataInputStram , DataOutputStream
أو FileInputStream & FileOutputStream
بالمناسبه انا قرأت بأن هذين الكلاسين مناسبين جداً لمسألة استغلال البيانات المشفره ، من لديه معلومه ؟
هل لأنهم يتعاملون مع bytes ?
ولن نتطرق إلى ObjectOutputStream ,,plaplapla
طيب اجل وش تبي تشرح :angry:
class File , FileWriter , FileReader , BufferedWriter , BufferedReader
لن تحتاج سوا إلى BufferedWriter , BufferedReader ولكن للفهم الصحيح ادخلت الباقي
في الحقيقه أن BufferedWriter & BufferedReader جائت كـ Wrappering لـ FileWriter & FileReader
File ببساطه هذا قاعدة الclasses اللي تشتغل عليهن في برامجك ، فهو لايحتوي على مثد للقرائه أو للكتابه ،
باستطاعتك ان تنشأ منه ملف بواسطة constructor :
File f=new File("a.txt");في الكود السابق قمت بإنشاء ملف اسمه a ، لكن بالحقيقه انت لم تنشأ شئ حتى الآن ( بامكانك التأكد بالذهاب إلى مجلد مشروعك والبحث عن الملف لن تجده )
مالحل ؟
الحل هو مناداة المثد createNewFile لإنشاء الملف فيزيائياً لذلك ستجده موجود في المجلد
public class Main {
public static void main(String[] args) throws IOException {
File f=new File("a");
f.createNewFile();
}
}هذا الكلاس يمكنك من إنشاء ملف أو directory بنفس الاوبجكت
طيب وش الmethods المهمه في هذا الكلاس ؟ :huh: :huh:
boolean delete()
لحذف الملف ترجع صح إذا كان الملف مو قيد التشغيل ببرنامج آخر ،أو إذا كان directory فاضي
boolean exists()
ترجع صح إذا كان الملف موجود ،
boolean mkDir()
لجعل الاوبجكت Directory وليس ملف
int length()
لإرجاع طول الملف
، طيب اوكي الحين FileWriter
FileWriter & FileReader يتعاملون مع characters وليس مع bytes مثلFileInputStream & FileOutputStream
بمعنى أن في كل الحالات التعامل يتم عن طريق integers تكتب ، ولكن في FileWriter & FileReader يتم الكتابه والقرائه على أساس أن الارقام هي char
مثال
public class Main {
public static void main(String[] args) throws IOException {
FileWriter fw=new FileWriter("aa");
fw.write("Oops ,, Aha !!");
fw.flush();
}
}قمنا بإنشاء ملف اسمه aa ومن ثم الكتابه فيه ومن ثم دفع الchars للتأكد بأنها كتبت بالملف
flush تستخدم لدفع الchars الموجوده في الستريم وكتابتها إلى الملف ،
طبعاً بامكانك استبدال السترنق OOps,,Aha بأي جمله أو بArray of char
public class Main {
public static void main(String[] args) throws IOException {
char[] c=new char[10];
FileWriter fw=new FileWriter("aa");
fw.write(c);
fw.flush();
}
}الكود السابق سيكتب 10 فراغات في الملف :lol:
طيب نروح للأخ المحترم FileReader :unsure:
لا لا مايحتاج نروح للي بعده ( لأننا فهمنا مضمونه فهو عكس FileWriter )

