الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[تنبيه - عنوان غير مناسب : ]أرجو المساعده

بدأه شـــــوقِ في 20 مايو 2010 · 8 رد · 566 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اتمنى المساعده اذا ممكن عندي سؤال لازم تسليمه السبت

Write a program that receives the byte based object file(clients.ser ) discussed in class; the program creates a text file(names.txt); then reads the contents of (clients.ser ) and writes the firstName and lastName only of all client records, in the text file.

الحمدلله انا عرفت اسوي كل شي بس باقي كيف اخذ المعلومات من ملف واحطها في ملف ثاني والمشكله انهم مختلفين في النوع :wacko:

فأتمنى المساعده

وشكرا

#2

بعد ما تقرأ البيانات من الملف الأول و تحصل منها على كاين ولكين من نوع Employe

Employee e = //code to read from clients.ser

بعد ذلك, قم بفتح ملف و إكتب فيه البيانات التي تريدها:

PrintWriter out = new PrintWriter (new FileOutputStream("file.txt"));
out.println (e.getFirstName());
out.println (e.getLastName());
out.close();
#3
{هويدي} كتب:

بعد ما تقرأ البيانات من الملف الأول و تحصل منها على كاين ولكين من نوع Employe

Employee e = //code to read from clients.ser

بعد ذلك, قم بفتح ملف و إكتب فيه البيانات التي تريدها:

PrintWriter out = new PrintWriter (new FileOutputStream("file.txt"));
out.println (e.getFirstName());
out.println (e.getLastName());
out.close();

مره شكرا على الرد :)

بس معليش ممكن توضح اكثر ما فهمت :blush:

انا سويت كلاس student وحطيت فيها كل المعلومات من اسم ورقم وغيره

وبعدين سويت كلاس حطيت method open file, write in file,close file من نوع serilaizable file

وسويت كلاس حطيت method open file,read from file,close file من نوع text file

فممكن توضح الخطوات اللي انت قلتها وين احطها بالضبط بأي كلاس فيهم

وربي يعطيك ألف عافيه

#4

إذن, إعرضي شفرتك و دعينا نساعدك

#5

الكلاسات بالمرفق

والله يعطيك ألف عافيه

وربي يساعدك ويفرج همومك

AccountSerializable.java

ReadClient.java

ClientTest.java

تم تعديل هذه المشاركة بواسطة شـــــوقِ في 20 مايو 2010 في 22:21

#6

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

قومي بتعديل كودك على هذا الكود, أو إفهمي هذا الكود و قومي بتكملة كودك

import java.io.*;

public class Test{

	final static String SER_FILE_NAME = "employees.ser";
	final static String TEXT_FILE_NAME = "employees.txt";	

	public static void main(String[] args) throws Exception{

		writeEmployee();
		Employee e = readEmployee();
		// test
		System.out.println ("Employee firstname is: " + e.firstName);
		//-test

		writeToTextFile(e.firstName);
		writeToTextFile(e.lastName);
	}

	private static void writeEmployee() throws IOException{
		Employee e = new Employee();
		e.firstName = "Ahmed";
		e.lastName = "Hewedy";
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(SER_FILE_NAME));
		oos.writeObject(e);
		oos.close();
	}

	private static Employee readEmployee() throws IOException, ClassNotFoundException{
		Employee e = null;
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(SER_FILE_NAME));
		e = (Employee) ois.readObject();
		ois.close();
		return e;
	}

	private static void writeToTextFile(String data) throws IOException{
		PrintWriter out = new PrintWriter(new FileOutputStream(TEXT_FILE_NAME, true));
		out.println(data);
		out.close();
	}

	static class Employee implements Serializable{
		private String firstName, lastName;
	}
}
#8
شـــــوقِ كتب:

الكلاسات بالمرفق

والله يعطيك ألف عافيه

وربي يساعدك ويفرج همومك

ما قمته به مسبقاً جميل

وبقي عليكي القليل فقط لاكمال ما تريدين

قومي بالتالي

1- في الكلاس ReadClient

قومي بالتعديل التاللي

اذهبي الى المثد

 public void readRecords()
      {
         AccountSerializable record;
         System.out.printf("%-10s%-12s%-12s%-10s\n","Account","First Name","Last Name","Balance");
         try
         {
            while(true)
            {
               record =(AccountSerializable) input.readObject();
               System.out.printf("%-10d%-12s%-12s%-10.2f\n", 
                  record.getAccount(), record.getFirstName(), record.getLastName(), record.getBalance());
            }//end while
         }//end try
             catch(EOFException eofRef)
            {
               return;
            }//end catch
             catch(ClassNotFoundException cnfeRef)
            {
               System.err.println("Unable to create object");
            }//end catch
             catch(IOException ioeRef)
            {
               System.err.println("Error during read from file");
            }//end catch

      }//end Read

هذه المثد

هي التي تقوم بقرأة الملف الابوبجكت ser وتكوين اوبجكت

AccountSerializable record

المشكلة هي أن هذا الاوبجكت

AccountSerializable record

معرف داخل المثد وبالتالي فلا يمكنك الوصول إليه إلا من داخل المثد

لكنك تحتاجيين الوصول إليه من خارج هذه المثد فعليكي

حذف السطر الأول من المثد السابقة

احذفي

         AccountSerializable record;

واجعلي هذا الاوبجكت تابع للكلاس ReadClient ككل

فعليكي اضافة السطر التالي الى الكلاس

private AccountSerializable record;

2- في الكلاس ReadClient

تحتاجين مثد للوصول إلى الاوبجكت السابق record فقومي بإضافة المثد التالي

public AccountSerializable getRecord()
{
return record;
}

عوضا عن الخطوة 1-2 يمكنك

تستطيعين بدون الحاجة الى ما سبق فقط تعديل المثد لتكون بالشكل التالي

 public AccountSerializable readRecords()
      {
         AccountSerializable record = null;
         System.out.printf("%-10s%-12s%-12s%-10s\n","Account","First Name","Last Name","Balance");
         try
         {
            while(true)
            {
               record =(AccountSerializable) input.readObject();
               System.out.printf("%-10d%-12s%-12s%-10.2f\n", 
                  record.getAccount(), record.getFirstName(), record.getLastName(), record.getBalance());
            }//end while
         }//end try
             catch(EOFException eofRef)
            {
               return record;
            }//end catch
             catch(ClassNotFoundException cnfeRef)
            {
               System.err.println("Unable to create object");
return null;
            }//end catch
             catch(IOException ioeRef)
            {
               System.err.println("Error during read from file");
return null;
            }//end catch

      }//end Read

اتوقع انتيهننا من هذا الكلاس

3- الان اذهبي الى الكلاس ClientTest

قومي بإنشاء أوبجكت من الكلاس ReadClient

private ReadClient readSer= new ReadClient();

واذهبي الى المثد addRecords

وقومي بجعل كود المثد كالتالي

 public void addRecords()
      {
      //I do not know what should I write here
      		// في حالة استخدمتي الخطوات 1-2
AccountSerializable  record= readSer.getRecord();

// في حالة لم تستخدمي الخطوات 1-2 واستخدمي الخطوة البديلة
AccountSerializable  record= readSer.readRecords();

	// وتضيفي كود حفظ الاسم الاول والاخير الى الملف النصي طبعا يمكنك الحصول على الاسم الأول والاخير من خلال الكود التالي
record.getFirstName();
record.getLastName();

      }

وكل ما تبقى لكي في الاخير هو عمل المثد main واستدعاء المثدات بشكل سليم

طبعاً ينقصك ايضاً كود إنشاء ملف ser يبدوا انك تفترضين وجوده مسبقاً

على اية حال فكرة الكود الذي وضعه لك الاستاذ هويدي ابسط واكثر اختصاراً إن أردت فيمكنك تعديل كود كلاساتك لتتوافق مع فكرته

بالتوفيق

تم تعديل هذه المشاركة بواسطة san3aniJava في 21 مايو 2010 في 11:44

لا بد من صنعاء وان طال السفر

#9

الأستاذ هويدي والأخ صنعاني :blush:

مــــــــره شكــــــــرا

الله يعطيكم ألف عافيه

وربي يجزاكم كل خير

:)

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…