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

كيف أحصل على السواقة الليزرية بالضبط

مغلق
بدأه hamzalion في 2 ديسمبر 2007 · 7 رد · 1,129 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بدي وصل للسواقة الليزرية

#2

هل تريد أن تقرأ منها أو تكتب عليها ماذا بالضبط؟؟

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

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

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

728x90.png

#3

اذا كنت تقصد الحصول على اسم السي دي

استخدم التالي

	File[] roots = File.listRoots();

سيقوم بارجاع جميع الـ Drive في جهازك يبقى تحديد من هو ال CD Rom

منقطع من حين لاخر

#4
	public static void main(String[] args) {
		File[] roots = File.listRoots();
		File cdRoom = findCD(roots);
		if (cdRoom == null) {
			System.err.println("cannt find the CD-Room!");
			System.exit(1);
		}
		System.out.println("Your CD-Room drive is: " + cdRoom.getAbsolutePath());
	}

	private static File findCD(File[] roots) {
		for (int i = 0; i < roots.length; i++) {
			if (!roots.canWrite()) {
				return roots;
			}
		}
		return null;
	}

جرب هذا الكود

فقط تأكد أنه سيعمل إذا كانت السواقة يمكن الكتابة عليها (writer)

#5

المبرمج عمر لاحظ انه اذا كان هناك قرص محمي ( غير قابل للكتابة ) سيقوم البرنامج بارجاع قيمته على انه CD ROM

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

اعتقد لا يوجد حرف للسي دي في لينكس ولكن يتم عمل mount له في مجلد معين !

منقطع من حين لاخر

#6
اقتباس
سيقوم بارجاع جميع الـ Drive في جهازك يبقى تحديد من هو ال CD Rom

كيف؟؟؟؟؟؟؟؟؟؟؟؟

اقتباس
مبرمج عمر لاحظ انه اذا كان هناك قرص محمي ( غير قابل للكتابة ) سيقوم البرنامج بارجاع قيمته على انه CD ROM

واذا كانت R\W شو الحل

اذا كانت أحد السواقات محمية للكتابة يدخل عللى الشرط

#7

WE ARE WATINGGGGGGGGGGGGGGGGG!!!!!!!!!!!!!!!!! ADMINTRATOR

#8

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

اقتباس
المبرمج عمر لاحظ انه اذا كان هناك قرص محمي ( غير قابل للكتابة ) سيقوم البرنامج بارجاع قيمته على انه CD ROM

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

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

اعتقد لا يوجد حرف للسي دي في لينكس ولكن يتم عمل mount له في مجلد معين !

أولا: listRoots لن ترجع إلا ما عمل له mount قبل ذلك

ثانيا: listRoots في اللينكس سترجع "/"

وبالتالي يمكنك في حالة اللينكس أن تعمل mount أولا باستخدام الامر Runtime.exec

أو ان تقرأ الملف /etc/fstab حيث أنه يحتوي على ال available partitions

اقتباس
واذا كانت R\W شو الحل
اقتباس
طيب اذا كانت writer فهو ايضا مرجعها---لما نفذت الكود

لأن الكلاس الخاصة بك لا يحق لها الكتابة على السي دي ليه:

1. هل أدخلت سي دي داخل الcd-room

2. هل السي دي التي أدخلتها فارغة أو غير مغلقة بمعنى أنك يمكنك الإضافة إليها

3. إذا كانت الإجابتين السابقتين بنعم فأعتقد أن السبب هو أنك لا تستطيع الكتابة على هذا المسار إلا ببرنامج خاص أي أن الكلاس الخاصة بك لا يمكنها الكتابة على هذا المسار لذلك أرجعت لك الدالة false، وقد يكون الدليل على ذلك أنك كمستخدم للويندوز لا يمكنك لصق ملف على السيي دي حتى وإن كان عندك writer وإن سمح لك بذلك فهو إنما يضعها في ملف مؤقت حتى تنسخها على السي دي.

طيب إيه الحل؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

في طريقة أرجو أن تجربوها بس فيها مشكلة بسيطة هتعرفوها لما تجربوها:

	public static void main(String[] args) {
		File[] roots = File.listRoots();
		File cdRoom = findCD(roots);
		if (cdRoom == null) {
			System.err.println("Please insert the cd first!");
			System.exit(1);
		}
		System.out.println("Your CD-Room drive is: " + cdRoom.getAbsolutePath());
	}

	private static File findCD(File[] roots) {
		FileSystemView fileSystemView = FileSystemView.getFileSystemView();
		for (int i = 0; i < roots.length; i++) {
			if (roots.exists()&&fileSystemView.getSystemTypeDescription(roots).toUpperCase().indexOf("CD")>=0) {
				return roots;
			}
		}
		return null;
	}

تم تعديل هذه المشاركة بواسطة prog_omer في 6 ديسمبر 2007 في 09:48

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

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