في شي طريقة للحصول على عدد الملفات على الهارد؟؟؟؟؟؟؟؟؟؟؟؟؟؟
كيف احصل على عدد الملفات على الجهاز
نعم هناك طريقه
اقرأ عن الكلاس File
كود سريع لإعادة الذاكره :)
اتمنى ان تجربه واذا ضبط معك اتمنى اخباري لماذا -2 ؟؟
public class Main {
public static void main(String [] args){
File root=new File("C:\\");
List<String> list=new ArrayList<String>();
listFiles(root,list);
System.out.println(list);
}
public static void listFiles (File root, List<String> list ){
File[] files=root.listFiles();
for(int i=0;i<files.length-2;i++){
if(files.isDirectory())
listFiles(files,list);
else
list.add(files.getName());
}
}
}السلام عليكم
باستخدام العودية شتغلتا من زمان بس البرنامج اثناء التنفيذ يطول ويعطي خطأ out of memory على اجرائتك
ولكن كنت مشتغلا من فترة واشتغلت صح
بدي اذا في طريقة جاهزة في الجافا أو باستخدام API !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
اقتباسList<String> list=new ArrayList<String>();
ممكن شرح <String> شو يعني ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
وشكرا على الرد
تم تعديل هذه المشاركة بواسطة hamzalion في 21 أكتوبر 2007 في 22:06
ياأخي سبب خروج هذا الخطأ ان الهيب عندك لايتحمل النتائج
بالنسبه للدوال لايوجد داله تقوم بعمل ماتريد .. ولكن في الكود استخدمنا دوال لمساعدتنا فيما نريد
وإلا كم ستكتب سطر في برنامج لايستخدم مكتبات جافا
هلا والله مشرفنا وحبيبنا ابو الفؤاد
والله مدري ليش -2 ، كان الفجر وسهران ، ناسي وش كنت افكر فيه
لكن الاكيد انها ماصارت معي صح إلا ب -2
هلا بيك مشرفنا الاخ عيسى :)
انا جربت الكود لم احصل على اي نتيجة متطابقة مع الويندوز ولا في اي حالة حتى -1 -2 او 0
لكن اقرب النتائج كانت عند استخدام length فقط !
مع وجود فارق 6 الاف ملف !!
منقطع من حين لاخر
السلام عليكم
كيف حال المشرفين الجدد
أحلى قيادة في الدنيا وإن شاء الله بقيادتكم راح نحطم كل الأقسام المعادية :rolleyes: خصوصاً قسم . ولا بلاش :D
بالنسبة للسؤال أكيد الهيب مش راح يستحمل لأن البرنامج بيخزن أسامي كل الملفات الي على قرص السي
أنا عدلت على كود الأخ عيسى والبرنامج جاب العدد بالتمام والكمال
import java.io.File;
public class Main {
private static long counter;
public static void main(String [] args){
File root=new File("C:\\");
System.out.println(listFiles(root));
}
public static long listFiles (File root){
File[] files=root.listFiles();
for(int i=0;i<files.length;i++){
if(files.isDirectory())
listFiles(files);
else
counter++;
}
return counter;
}
}حاولت أسرع البرنامج باستخدام تعدد الخيوط لكني حصلت على نتيجة عكسية
فالبرنامج زاد بطأً على بطأ
لما راجعت الشيفرة وجدت أني استخدمت عملية التزامن synchronization
المشكلة أنها تقوم بعمل حمل زائد على الجهاز
بل إن عملية إنشاء الخيط أصلاً عملية زائدة
وفي النهاية الخوارزمية ستظل تعمل بتعقيد n
وعلى حسب علمي الخيوط في الجافا لا تعمل على أكثر من معالج
لكن مع كل هذا الكلام سأضع الشيفرة بين أيديكم لعل وعسى أن يكون لديكم شيء يفيدني
import java.io.File;
public class MainMulti {
private static Long counter=new Long(0);
public static void main(String [] args){
File root=new File("C:\\");
System.out.println(listFiles(root));
}
public static long listFiles (File root){
final File[] files=root.listFiles();
for(int i=0;i<files.length;i++){
if(files.isDirectory()){
if(files.listFiles().length>50){
Thread t=new Thread(new Runnable(){
public void run() {
for(int i=0;i<files.length;i++){
System.out.println(files.getName()+" "+i);
if(files.isDirectory())
listFiles(files);
else
synchronized (counter) {
counter++;
}
}
}
});
t.start();
}
else if(files.isDirectory())
listFiles(files);
else
synchronized (counter) {
counter++;
}
}
else
synchronized (counter) {
counter++;
}
}
return counter;
}
}اقتباس
مشكور بس في المشكلة التالية
Generics are not supported in –source (try –source to enable generics )
الـ Generics مدعومة في جافا 5 وما فوق على ما اعتقد !
بامكانك التخلي عنها اذا لم ترد تحديث الجافا
منقطع من حين لاخر
شو مشان عدد الملفات على الهارد
عم يأخذ البرنامج وقت طويل لعدهم
معقول يندوز مو مخزن عدد الملفات في شى مكان بقدر اوصلوا يسرعة دون استخدام العودية
جرب استخدام Multithreading لتحسين البرنامج بحيث يقوم اكثر من ثريد بعد الملفات داخل كل مجلد
لكن اتوقع لن تحصل على فرق كبير !
منقطع من حين لاخر
أخي أبو فؤاد
كنت قد طرحت مشاركة في هذا الموضوع أحاول فيها أن أقوم بتسريع البرنامج عن طريق تعدد الخيوط
لكني حصلت على نتيجة سيئة جداً بل إن البرنامج أصبح بطيء بشكل غير طبيعي
هل يمكنك أن تراجع البرنامج وتكتبلي ملاحظات عليه
الله معك
جربت multithreading البطء موجودالبطء موجود
تم تعديل هذه المشاركة بواسطة hamzalion في 2 نوفمبر 2007 في 22:20
هذا الموضوع مغلق.
