نمایش نتایج 1 تا 4 از 4

نام تاپیک: برنامه کار با فولدر و فایل

  1. #1

    Lightbulb برنامه کار با فولدر و فایل

    سلام.من کدی رو لازم دارم که بتونه تا چهار لایه وارد فولدر بشه به صورت درختی پیمایش کنه تا بعد از چهار فولدر به فایل های توی فولدر نهایی برسه و تعداد آنها را به همراه اسمشان برگرداند وبترتیب همچنین فولدرهای بعدی و فایلهای درون آنها
    این کدرو نوشتم ولی مشکلم اینه که نحوه تشخیص فایل از فولدر رو نمیدونم چطور بنویسم برنامه تا هزار تا فولدر موجود رو بافایلهای درون آنها برمیگردونه ولی چون چهارلایه ای هست اگه زودتر از چهار فولدر در فولدر دوم فایل باشه ارور میده چون چهارلایه کامل نمیشه
    (تعداد زیادی فولدر هست که توهرکدوم سه فولدر دیگه وتواخری هم تعدادی فایل ،میخوام تعداد فایل ها و فولدر ها رو بااسامی برگردونه و بدونم ماکزیمم تعداد فایلها چه تعدادیه )

    public static void main(String[] args) {
    // TODO code application logic here
    int [] a =new int[10000];
    int h=0;
    String[] dir1;
    String[] dir2;
    String[] dir = new java.io.File("Z:\\kargozini\\PERSENEL").list();
    for (int i=0;i<dir.length;i++) {
    dir1= new java.io.File("Z:\\kargozini\\PERSENEL\\" + dir[i]).list();
    for (int j=0;j<dir1.length;j++ ){
    dir2= new java.io.File("Z:\\kargozini\\PERSENEL\\" + dir[i]+ "\\"+ dir1[j]).list();
    for(int k=0;k<dir2.length;k++) {
    if (!dir2[k].contains(".DAT") && !dir2[k].contains(".TXT") ) {
    a[h++]=new java.io.File("Z:\\kargozini\\PERSENEL\\" + dir[i]+ "\\"+ dir1[j]+ "\\" + dir2[k]).list().length;
    System.out.println(h+":"+ dir[i]+dir1[j]+ dir2[k] + " :" + a[h-1]);
    }
    }
    }
    }

    }
    }

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: برنامه کار با فولدر و فایل

    کدی قبلا در این رابطه نوشتم که تا هر عمقی پیمایش میکنه و فایل و فولدر هم مشخصه. میتونید یکم تغییرش بدید. ( برای تشخیص تفاوت فولدر و فایل هم از متد isDirectory استفاده شده )
    اینم لینکش : https://barnamenevis.org/showthread.p...=1#post2016557
    آخرین ویرایش به وسیله vahid-p : جمعه 20 تیر 1393 در 04:47 صبح

  3. #3

    نقل قول: برنامه کار با فولدر و فایل

    خیلی ممنونم

  4. #4
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: برنامه کار با فولدر و فایل

    همین برنامه رو اگه بخوایم تعداد فایل های هر فولدر رو برگردونه و ماکزیمم تعداد فایل های تمامی فولدر ها رو برگردونه چطور باید تغییر بدیم
    این سوالتون رو اینجا جواب میدم چون تو اون تاپیکی که لینکش رو داده بودم، جای بحث نبود. فقط برنامه قرار میگیره.

    در مورد این سوالتون به نظرم کافیه که شما هنگام پیمایش به جای print کردن اسم فایل، تعداد اونها رو ذخیره کنید. مثلا میتونید از یک ArrayList برای اینکار استفاده کنید. البته شما دقیقا نگفتید که تعداد فایل های هر فولدر، فایلهای ساب فولدر هاش هم شامل میشه یا نه. با فرض منفی بودن این موضوع.

    کدی که لینکش رو دادم تبدیل میشه به چنین کدی :


    public static void main(String[] args) throws IOException {
    File file = new File("C:\\Program Files\\Java\\jre8"); //Directory address
    System.out.println(file.getAbsolutePath());
    ArrayList<Integer> numFileList = new ArrayList<>();
    if (file.isDirectory()) {
    listFile(file, 0, numFileList);
    }
    }

    public static void listFile(File file, int depth, ArrayList<Integer> numFileList) {
    int num = 0;
    for (File f : file.listFiles()) {
    num++;
    if (f.isDirectory()) {
    for (int i = 0; i < depth; i++) {
    System.out.print("|" + "\t");
    }
    System.out.println("|_" + f.getName());
    listFile(f, depth + 1, numFileList);
    } else {
    for (int i = 0; i < depth; i++) {
    System.out.print("|" + "\t");
    }
    System.out.println("|_" + f.getName());
    }
    }
    numFileList.add(num);
    }

    اینجا اطلاعات فولدر ذخیره نمیشه و فقط تعداد ذخیره میشه. خب وقتی تعداد رو در ArrayList ذخیره کردی بعد از اتمام کار میتونی این حلقه رو داخل main بعد از همه کد ها قرار بدی :
            int max=0;
    for(int x:numFileList){
    System.out.println(x);
    if(x>max){
    max=x;
    }
    }
    System.out.println("Max="+max);


    چون numFileList.add(num); در پایان متد listFile اومده، پس هر چه سطح فولدر بالاتر باشه، یعنی هنوز به عمق نرفته باشه، تعدادش دیرتر ذخیره میشه و در لیتی که پرینت میشه، آخر از همه تعدادش نوشته میشه. حالا اگر اسامی فولدر ها رو میخواید و اینا تغییرات جزئیه که مثلا به جای ArrayList<Integer> از ArrayList<MyElement> استفاده کنید که MyElement یه کلاسیه که خودتون میسازید و اطلاعات اضافه ای که دوست دارید ذخیره کنید. راستی من اینجا تعداد فایل ها رو مجموع تعداد فایل ها و فولدرهای اون دایرکتوری در نظر گرفتم، اگه فقط منظورتون فایله که اون num++ در متد listFile رو داخل شرط قسمت else بذارید.
    تغییرات جزئی دیگه باخودتونه.
    موفق باشید

تاپیک های مشابه

  1. پیشنیاز های برنامه کار با فایل excel
    نوشته شده توسط barnamenevisforme در بخش VB.NET
    پاسخ: 4
    آخرین پست: چهارشنبه 13 شهریور 1392, 17:34 عصر
  2. آموزش: سورس برنامه کار بر روی فایل های صوتی ( MP3 )
    نوشته شده توسط alexmcse در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 28 فروردین 1392, 12:15 عصر
  3. سوال: ساخت یک فولدر و فایل text در debug برنامه
    نوشته شده توسط saeed 444 در بخش VB.NET
    پاسخ: 12
    آخرین پست: چهارشنبه 30 اسفند 1391, 17:15 عصر
  4. سوال: نمایش فولدر حاوی فایل در برنامه نصب شده
    نوشته شده توسط abas1388 در بخش تولید و توسعه برنامه های Setup و Install
    پاسخ: 1
    آخرین پست: دوشنبه 16 آذر 1388, 22:53 عصر
  5. سوال: نمایش فولدر حاوی فایل در برنامه نصب شده
    نوشته شده توسط abas1388 در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: یک شنبه 15 آذر 1388, 13:38 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •