[فكرة] :إعادة توجيه جميع مخرجات برنامج java نحو ملف

لدى كتابة برامج بلغة الـ java  فإنه غالبا ما نبدأ في إظهار بعد النتائج على الـ console  لنعرف إن كانت عملية ما قد تمت بصورة صحيحة،
لكن أحيانا لما تكثر هذه المخرجات و تتعدى بضع الآلاف (و أحيانا بعض المئات)  فإنه من الصعب قراءتها من الـ console   إما لأن لون الـ console  غير مريح  أو أن كثرة المخرجات جعل من المستحيل قراءة أولى البيانات  (عدد الأسطر التي يمكن قراءتها في الـ console محدود و لهذا عندما يتم تجاوز حد ما فإنه يتم حذف السطور الأولى)

و عليه فإنه أول ما يتبادر إلى ذهنك هو كتابة النتائج في ملف نصي لقراءتها لاحقا

هناك طريقة تجنبنا التعامل مع الملفات من فتح و إغلاق و إضافة إلى نهاية الملف و ما إلى ذلك من عمليات على الملفات و هي بإضافة السطرين التاليين في بداية الشفرة المصدرية

System.setOut(new PrintStream(new FileOutputStream(“c:\\out.txt”)));
System.setErr(new PrintStream(new FileOutputStream(“c:\\error.txt”)));

حيث أن السطر الأول سيوجه جميع المخرجات الطبيعية إلى الملف

c:\out.txt

أما الثاني فسيرسل جميع رسالات الخطأ إلى المل

c:\error.txt

حساب الفرق بين تاريخين في الـ Java

السلام عليكم

الشيفرة التالية توضح كيفية حساب الفرق بين تاريخين في لغة Java

في هذا المثال التاريخ مكون من السنة و الشهر و اليوم و الساعة و الدقيقة و الثانية

و نعتمد في حساب الفرق على الصنف

java.util.Calendar

إقرأ المزيد

تعرف على ant

تعرف  على ant

الهدف من هذا المقال هو تعريف الـ ant  لمطوري الجافا الذين لم يستعملوا هذه الأداة من قبل. و لتبين الفائدة المرجوة من هذه الأداة سنعقد مقارنة بين مشروعين أحدها يتم إنشاؤه و ترجمته باستعمال سطر الأوامر  و الآخر باستعمال الـ Ant  . متابعة ممتعة

إقرأ المزيد

حل لمشكل java.lang.OutOfMemoryError: Java heap space

حل لمشكل  java.lang.OutOfMemoryError: Java heap space

السلام عليكم

أثناء كتابتي لأحد البرامج بالجافا صادفني مشكل عدم توفر الذاكرة اللازمة لتنفيذه

رسالة الخطأ هي:

java.lang.OutOfMemoryError: Java heap space

و هذا لأن البرنامج عبارة عن JADE Agent  يقوم بالتنقل من جهاز إلى آخر حاملا معه مجموعة من الملفات

بعض بحث على النت وجدت أنه يجب الطلب من الـ Java Virtual Machine  بحجز ذاكرة أكبر

يتم ذلك كالتالي:

java -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=1000M YourClass

حيث أن YourClass  هو اسم الـ class الذي سيتم تشغيله  بالطبع  يجب حذف الـ .class  من اسم الـ class  في هذا السطر

أرجو أن تكون هذه الطريقة هي حل لمشكلتك أيضا 😀

كتابة برنامج java لنقل الملفات (إرسال و استقبال) بين جهازين على شبكة محلية

كتابة برنامج java  لنقل الملفات (إرسال و استقبال) بين جهازين على شبكة محلية

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

import java.net.*;

import java.io.*;

public class FileServer {

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

// create socket

ServerSocket servsock = new ServerSocket(4007);

String requestedFile=null;

Socket sock;

ObjectInputStream ois=null;

while (true) {

System.out.println(“Waiting on “+servsock.getLocalPort()+”…”);

sock = servsock.accept();

System.out.println(“Accepted connection : ” + sock);

requestedFile=””;

// receive the request

ois = new ObjectInputStream(sock.getInputStream());

try {

requestedFile = (String) ois.readObject();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

System.out.println(“the requested file is   “+ requestedFile);

// sendfile

File myFile = new File (requestedFile);

byte [] mybytearray  = new byte [(int)myFile.length()];

FileInputStream fis = new FileInputStream(myFile);

BufferedInputStream bis = new BufferedInputStream(fis);

bis.read(mybytearray,0,mybytearray.length);

OutputStream os = sock.getOutputStream();

System.out.println(“Sending…”);

os.write(mybytearray,0,mybytearray.length);

os.flush();

sock.close();

}

}

}

إقرأ المزيد