Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
mastersvq
2 / 2 / 0
Регистрация: 09.07.2014
Сообщений: 24
1

Вывести на экран абсолютные пути всех файлов, которые находятся в заданном каталоге и всех его подкаталогах

10.07.2014, 17:27. Просмотров 1776. Ответов 3
Метки нет (Все метки)

Не могу вернуть масив с директориями...(
Если выводить на экран в цикле, то все нормально, но когда с main вывожу возвращаемый массив, выводит только "верхние" директории... в чем беда?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class IOUtilsImpl implements IOUtils {
 
    @Override
    public String[] findFiles(String arg0) {
        String[] directories = null;
        if (arg0 != null) {
            File f = new File(arg0);
            File[] files = f.listFiles();
            directories = f.list();
 
            for (int i = 0; i < files.length; i++) {
                if (files[i].isFile()) {
                    directories[i] = files[i].getAbsolutePath();
                    //System.out.println(directories[i]);
                }
                if (files[i].isDirectory()) {
                    findFiles(files[i].getAbsolutePath());
                }
 
            }
 
        }
        return directories;
    }
 
    @Override
    public String[] findFiles(String arg0, String arg1) {
        String[] directories = null;
        if (arg0 != null && arg1 != null) {
            File f = new File(arg0);
            File[] files = f.listFiles();
            directories = f.list();
 
            for (int i = 0; i < files.length; i++) {
                if (files[i].getName().endsWith(arg1)) {
                    if (files[i].isFile()) {
                        directories[i] = files[i].getAbsolutePath();
                        System.out.println(directories[i]);
                    }
                }
                if (files[i].isDirectory()) {
                    findFiles(files[i].getAbsolutePath(), arg1);
                }
            }
 
        }
        return directories;
    }
 
    @Override
    public void replaceChars(Reader arg0, Writer arg1, String arg2, String arg3) {
        // TODO Auto-generated method stub
 
    }
 
    public static void main(String[] args) {
        IOUtilsImpl impl = new IOUtilsImpl();
        String path = "C:/eclipse(workspace)/";
        impl.findFiles(path);
        String[] array = impl.findFiles(path);
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
 
    }
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 17:27
Ответы с готовыми решениями:

Получить и вывести на экран абсолютные пути всех файлов, которые находятся в заданном каталоге и всех его подк
Получить и вывести на экран абсолютные пути всех файлов, которые находятся в заданном каталоге и...

Вывести на консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подкаталогах
Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех...

Вывести список всех файлов в каталоге и его подкаталогах в CSV-файл
Доброго времени суток, мастера! Есть каталог: C:\scan в нем несколько подкаталогов, в каждом из...

Найти суммарный объем всех графических файлов (bmp, jpg), находящихся в каталоге Windows и всех его подкаталогах
Здравствуйте, требуется помощь с задачами, которые нужно выполнить в PowerShell Найти суммарный...

Получить список всех файлов в каталоге и его подкаталогах
Привет всем, не знаю как получить список всех файлов в папке и ее подпапках. Хочу посчитать эти...

3
Yoghurt_92
50 / 50 / 42
Регистрация: 06.09.2013
Сообщений: 188
22.07.2014, 04:37 2
Лучший ответ Сообщение было отмечено mastersvq как решение

Решение

mastersvq, вот мой вариант

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.*;
import java.util.*;
 
public class Test {
 
    public static ArrayList<File> AllFiles(ArrayList<File> files) {
        
        ListIterator<File> iter = files.listIterator();             //устанавливаем итератор на начало списка
        
        while(iter.hasNext()) {                                     //идем до конца списка, пока будут файлы
            File file = iter.next();                                //сохраняем в переменную рассматриваемый файл или директорию
            if(file.isDirectory()) {                                //если файл - директория
                int count = iter.nextIndex();                       //запоминаем положение в списке
                iter.remove();                                      //даляем папку
                files.addAll(Arrays.asList(file.listFiles()));      //добавляем в конец списка все содержимое удаленной папки
                iter = files.listIterator(count);                   //устанавливаем итератор на след элемент сразу после удаленной директории
            }
        }
 
        
        return files;
    }
    
    public static void main(String[] args) {                    
 
        String patg_to_dir = "F:/Книги по программированию/JAVA";           //наша директория
        File dir = new File(patg_to_dir);
        
        ArrayList<File> files = new ArrayList<File>(Arrays.asList(dir.listFiles()));        //получаем все файлы из текущей директории
        
        files = Test.AllFiles(files);           //здесь возвращаем список всех файлов из директории и поддерикторий
        
        Iterator<File> iter = files.iterator();
        
        while(iter.hasNext()) {                                     //выводим абсолютные пути к файлам
            System.out.println(iter.next().getAbsolutePath());
        }
    }
}
а у Вас была проблема в том, что вы выводили файлы, но не сохраняли их в массив перед возвращением в main, отсюда и проблема
1
mastersvq
2 / 2 / 0
Регистрация: 09.07.2014
Сообщений: 24
22.07.2014, 11:12  [ТС] 3
Спасибо! тема закрыта
0
Yoghurt_92
50 / 50 / 42
Регистрация: 06.09.2013
Сообщений: 188
22.07.2014, 19:09 4
mastersvq, кстати, могу предложит еще интересней вариант и короче

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.IOException;
import java.nio.file.attribute.*;
import java.nio.file.*;
 
public class Test {
    
    public static void main(String[] args) {                    
 
        String dirName = "F:/Книги по программированию/JAVA";
        
        try {
            Files.walkFileTree(Paths.get(dirName), new SimpleFileVisitor<Path>() {
                
                public FileVisitResult visitFile(Path path, BasicFileAttributes attribs) {
                    
                    System.out.println(path.toAbsolutePath());
                    return FileVisitResult.CONTINUE;
                }
            });
        }
        catch(IOException exc) {
            exc.printStackTrace();
        }
    }
}
здесь используется NIO, и количество строк заметно сократилось

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
22.07.2014, 19:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2014, 19:09

Программа, которая составляет список файлов нулевой длины в текущем каталоге и во всех его подкаталогах
Написать программу, которая составляет список файлов нулевой длины в текущем каталоге и во всех его...

В заданном каталоге и его подкаталогах найти общее количество подкаталогов. На экран вывести только требуемый результат. Использовать цикл FOR /D
Нашел, скопировал в файл, а как подсчитать и вывести количество???? @echo off cls FOR /r...

Получить список всех файлов в каталоге и подкаталогах с путями
Добрго времени суток. Короче есть debian как на нем получить список всех файлов в каталоге и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru