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

سؤال عن كيفية القرائة من سطر معين من ملف ال RandomAccessFile

مغلق
بدأه المستقيل في 3 يونيو 2007 · 18 رد · 936 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لقد قمت بانشاء ملف RandomAccessFile باسم Datau وقمت بالكتابه اليه والقرائة منه

ولكن عندي سؤال وهو كيف استطيع ان احدد السطر الذي اريد ان اقرأ منه أو اكتب عليه

وهذا هو كود انشاء الملف

import java.io.RandomAccessFile;
   import java.io.IOException;


   public class Datau {
   public static void main(String[] args) throws IOException {
   RandomAccessFile datau = new RandomAccessFile("datau.dat", "rwd");

   }
   }

وهذا كود الكتابة عليه

datau.writeBytes("name1\n");

وهذا كود لقرائة السطر الاول منه

 datau.readLine()

تم تعديل هذه المشاركة بواسطة المستقيل في 3 يونيو 2007 في 17:44

#2

اهلا من جديد اخي المستقيل :)

لكي تقرا اي سطر الافضل انك تعمل vector يحتوي على محتويات كل سطر ومن خلاله تصل للسطر الي تريد

جربت في الكود اضفت على الكود الاشياء التالية

FileReader

BufferedReader

لكي نقراء من الفايل

بصير الكود بعد التعديل:

import java.io.RandomAccessFile;
   import java.io.IOException;
   import java.io.*;
   import java.util.*;


   public class Datau {
	public static void main(String[] args) throws IOException {
		List read1 = new Vector();
		String line="";

		RandomAccessFile datau = new RandomAccessFile("datau.dat", "rwd");
		FileReader data= new FileReader("datau.dat");
		BufferedReader bReader=new BufferedReader(data);
		datau.writeBytes("name1\nname2\nname3\nname4\nname5\nname6");

		  while((line=bReader.readLine())!=null)
		  {	
			  read1.add(0,line);	
		  }

		  int L =6;
		String li= (String) read1.get(read1.size()-L);
		  System.out.println(li);


		   }
   }

هنا المتغير L يأخذ رقم السطر،

		  int L =6;
		String li= (String) read1.get(read1.size()-L);
		  System.out.println(li);

و السلام عليكم

#3

شكرا جزيلا لك اخي الحرازي

عندي سؤال وهو كيف استطيع التعديل على سطر محدد من هذه السطور؟

#4

بصراحة اخي ما بعرف كيف، انا الي اعرفه انه الافضل تتعامل مع ال vector في مثل هذه الحالة

على العموم انت تقدر تعدل فيه من خلال الكلاس نفسه اذا ما فيه متغيرات كثير مثل ما انت عامل في datau.writeBytes

#5

شكرا اخي الحرازي

اشكر مجهودك واهتمامك

ساحاول التعديل على نفس الكلاس

ولكن بقي لي استفسار بسيط

كيف استطيع ان اعمل import لهذا الكلاس بحيث استخدمه في الكلاسات الاخرى

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

وهذا جزء من الكود

import Datau.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 * Summary description for Change
 *
 */
public class Change extends JFrame
{

وهذا هو الايرور

 package Datau does not exist
import Datau.*;
^
1 error

تم تعديل هذه المشاركة بواسطة المستقيل في 3 يونيو 2007 في 22:49

#6

اول شي لازم تضع الكلاس في package كيف؟

في الكلاس datau تضيف في اول سطر قبل ال import

package package name

يعني مثلا لو كتبت التالي في ال datau.java

   package com;
   import java.io.RandomAccessFile;
   import java.io.IOException;
   import java.io.*;
   import java.util.*;

تلاحظ ان الكومبايلر عمل مجلد اسمه com في ال c:/com ووضع فيه الكلاس

ولكي تستدعي هذا الكلاس تقوم بال import في الكلاس الثاني

import com.*;
#7

لقد عملت الخطوة السابقة ولكن عند التنفيذ لكلاس ال Datau يعطي

Exception in thread "main "

#8

ممكن تعرض الكود أخي

انا جربت هذا وشغال بشكل سليم

   package com;
   import java.io.RandomAccessFile;
   import java.io.IOException;
   import java.io.*;
   import java.util.*;


   public class Datau {
	public static void main(String[] args) throws IOException {
		Vector read1 = new Vector();
		String line="";

		RandomAccessFile datau = new RandomAccessFile("datau.dat", "rw");
		FileReader data= new FileReader("datau.dat");
		BufferedReader bReader=new BufferedReader(data);
		datau.writeBytes("name1\nname2\nname3\nname4\nname5\nname84");

		  while((line=bReader.readLine())!=null)
		  {	
			  read1.add(0,line);	
		  }

		  int L =6;
		String li= (String) read1.get(read1.size()-L);
		  System.out.println(li);

		   }
   }
#9

هذا هو الكود واعتقد انه نفس الشيء

package com;
   import java.io.RandomAccessFile;
   import java.io.IOException;
   import java.io.*;
   import java.util.*;


   public class Datau {
	public static void main(String[] args) throws IOException {
		Vector read1 = new Vector();
		String line="";

		RandomAccessFile datau = new RandomAccessFile("datau.dat", "rw");
		FileReader data= new FileReader("datau.dat");
		BufferedReader bReader=new BufferedReader(data);
		datau.writeBytes("name1\nname2\nname3\nname4\nname5\nname84");

		  while((line=bReader.readLine())!=null)
		  {
			  read1.add(0,line);
		  }

		  int L =6;
		String li= (String) read1.get(read1.size()-L);
		  System.out.println(li);

		   }
   }
#10

لا اعرف سبب المشكلة

هل ظهر الخطأ بعد ان اضفت package com;

#11

نعم

بعد كتابة package com; ظهر الخطأ

وبدونها يعمل الكود بشكل صحيح

#12

هل للكومبايلر دور في هذا ؟؟؟؟؟

حيث ان الكومبايلر الذي عندي هو j2sdk1.4.2_06

#13

في اي مسار موجودة الكلاسات جرب ان تضعها على القرص

d:/

واذا ما اشتغل تقدر انك تعمل اوجكت من الكلاس

Datau dat= new Datau();
#14

شو البرنامج الي تستخدمة لكتابة الكود

jCreator??

#15

لقد قمت بتغيير مسار الكلاسات ولكن نفس المشكلة

ساجرب الطريقة الثانية

اخي الحرازي عندي استفسار اذا ممكن

اتذكر كلاس ال SerialToGsm الذي قمنا بعمل اوبجت منه لاستدعائه ونجح ذلك

لقد قمت بعمل exe للكلاسات عن طريق برنامج Java Launcher

ولكن عند تشغيل البرنامج لا يتم استدعاء كلاس ال SerialToGsm كما في حالة الرن في النوت باد

تم تعديل هذه المشاركة بواسطة المستقيل في 3 يونيو 2007 في 23:41

#16

لم اجرب ال Java Launcher

انا اشغل على ال netbeanse وهو لوحده يعمل ملف jar

جرب برنامج exe4j

#17

شكرا اخي الحرازي

لقد قمت بتنزيل البرنامج

ساحاول تجربته

تم تعديل هذه المشاركة بواسطة المستقيل في 4 يونيو 2007 في 00:01

#18

لقد قمت بتنزيل البرنامج ولكن لم استطع معرفة كيفية التعامل معه

هل من الممكن اخي الحرازي ان توضح لي كيفية التعامل مع هذا البرنامج

اعرف اني اثقلت عليك كثيرا بالاسئلة

ولكن لدي مشروع تخرج ولم يبقى الا اسبوع على تسليمه

#19

1- شي اعمل ملف jar من الكلاسات الي عملتلهم كومبايل أو اضغطهم في ملف winzip

2- تشغل exe4j

3- project type >> "jar in exe" mode

4- في ال application info تدخل الاسم ومكان عمل ال exe مثلا على سطح المكتب

5- ال excuatabel info

excuatabe type النوع اذا كان فيه jFrame نختار GUI

وايضا تختار اسم للبرنامج

6- java invocation

في ال class path تضغط على اشارة ال + لتحديد ملف ال winzip الي عملته

وفي ال general تكتب اسم ال main class الي اول ماتشغل البرنامج راح يشتغل

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

مثلا رقم الاصدار

هذا الموضوع مغلق.

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