Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97

Является ли файл папкой

15.11.2015, 00:21. Показов 1679. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Пишу программу поиска файла на заданном диске (с:, d: итд). Пока программа умеет только по заданному пути сравнивать имена находящихся там файлов с искомым. Хочу сделать так, чтоб если какой-то из файлов оказался папкой, то программа заходила в нее и тоже самое делала для этой директории. Как сделать проверку на то, является строка именем файла или папки?

мой код:
Java
1
2
3
4
5
6
7
8
9
10
11
public class Qwe {
    static String fileExists(String dir,String filename){
        File file=new File(dir);        String array[]=file.list();
        for(int i=0;i<array.length;i++)
            if(array[i].equals(filename))
                return dir;
                return "File not found in this cd disk.";
    }
public static void main(String [] args) throws IOException{
    System.out.println(fileExists("c:\\1","hw.java"));
}}
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2015, 00:21
Ответы с готовыми решениями:

Является путь файлом или папкой?
Добрый вечер! Может кто сталкивался... Используя драг-н-дроп мы получаем массив путей к чему-попало, а вот дальше нужно это все как-то...

Как отслеживать и соответственно вовремя изменить картинку с закрытой папкой на картинку с открытой папкой?
1) Как отслеживать и соответственно вовремя изменить картинку с закрытой папкой на картинку с открытой папкой - если пользователь открывает...

Не могу разобраться с папкой Desktop и скрытой папкой Public Desktop
Я хочу получить возможность взаимодействия с ярлыками. Одни ярлыки находятся по адресу c:\users\user\Desktop и к ним претензий нет. Но есть...

15
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
16.11.2015, 13:02
Java
1
file.isDirectory()
в случае если это папка, он вернёт true.
0
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
18.11.2015, 18:05  [ТС]
Doctor_,
Что-то не очень получается..
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Qwe {
    static String fileExists(String dir,String filename){
        File file=new File(dir);
        String array[]=file.list();
        for(int i=0;i<array.length;i++)
            if(array[i].isDirectory()==false)//Тут компилятор не согласен.
            if(array[i].equals(filename))
                return dir;
                return "File not found in this cd disk.";
    }
    
    
public static void main(String [] args) throws IOException{
    System.out.println(fileExists("c:\\1","hw.java"));
}}
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
18.11.2015, 21:23
Козак Алексей,
Java
1
2
String array[]
array[i].isDirectory()
вы вызваете метод isDirectory на строку. Там такого метода конечно же нет. Это метод объекта File
0
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
18.11.2015, 21:29  [ТС]
KEKCoGEN, Как мне тогда сослаться на файл или папку если не через строку?
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
18.11.2015, 21:41
Козак Алексей, должно быть так
Java
1
File[]array = file.listFiles();
1
19.11.2015, 06:09

Не по теме:

Цитата Сообщение от Козак Алексей Посмотреть сообщение
Java
1
if(array[i].isDirectory()==false)
Говнокод, так делать не надо.
[JAVA]if(!array[i].isDirectory())[JAVA] Конечно, при условии, что элемент массива - это файл.

0
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
19.11.2015, 11:33  [ТС]
KEKCoGEN, Doctor_,
Теперь заходит во все папки, но почему-то не реагирует на искомый файл.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Qwe {
    static String fileExists(String dir,String filename){
        
        File file=new File(dir);
        File[]array1 = file.listFiles();
        String []array2=file.list();
        for(String f:array2)
        System.out.println(f);
        
        for(int i=0;i<array1.length;i++){
            if(array1[i].isDirectory()==true)
             fileExists(array1[i].toString(),filename);
            if(array2[i].equals(filename))
                return dir;
    }
        return "File not found in this cd disk.";
    }
    
public static void main(String [] args) throws IOException{
    System.out.println(fileExists("c:\\1","hw.java"));
    }
}
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
19.11.2015, 12:04
1) Вам сказали что
Java
1
array1[i].isDirectory()==true
это гавнокод. Надо просто
Java
1
array1[i].isDirectory()
2) Вы не учитываете тот факт что у вас файл, а не стринг. Вам из файла надо получить имя.
Java
1
array[i].getName().equals(fileName)
0
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
19.11.2015, 12:13  [ТС]
Ну вообще у меня 2 массива создано - array1 и array2: один со стрингом, другой с файлами. Где директория нужна использую с File, где имя надо - String. Я понимаю что нормальные люди так не делают, но сам факт, почему не работает?
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
19.11.2015, 12:15
Весь код в студию, ибо из кусков ничего не понятно. Вы точно сравниваете имена файла с константой, или файл тупо в toString() переделываете?
0
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
19.11.2015, 12:16  [ТС]
Вот я переделал как вы сказали. Ошибка осталась.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Qwe {
    static String fileExists(String dir,String filename){
        
        File file=new File(dir);
        File[]array = file.listFiles();
        
        for(int i=0;i<array.length;i++){
            if(array[i].isDirectory())
             fileExists(array[i].toString(),filename);
            if(array[i].getName().equals(filename))
                return dir;
    }
        return "File not found in this cd disk.";
    }
    
public static void main(String [] args) throws IOException{
    System.out.println(fileExists("c:\\1","hw.java"));
    }
}
Если искомый файл находится в первой директории, то все находит.
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
19.11.2015, 12:24
Запустил ваш код, изменил путь и название файла чтоб скомпилить. Скомпилировалось без ошибок.

Добавлено через 4 минуты
ну да, вы исправили в одном месте, а это что за каки?
Java
1
fileExists(array[i].toString(), filename);
Вы работаете с файлом, а не стринг, что это такое? array[i].toString()?
может
Java
1
array[i].getAbsolutePath()
?
0
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
19.11.2015, 12:32  [ТС]
Все равно, если файл не в первой директории, а в какой-то следующей папке не находит.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Qwe {
    static String fileExists(String dir,String filename){
        
        File file=new File(dir);
        File[]array = file.listFiles();
        for(int i=0;i<array.length;i++){
            if(array[i].isDirectory())
             fileExists(array[i].getAbsolutePath(),filename);
            if(array[i].getName().equals(filename))
                return dir;
    }
        return "File not found in this cd disk.";
    }
    
public static void main(String [] args) throws IOException{
    System.out.println(fileExists("c:\\1","hw.java"));
    }
}
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
19.11.2015, 12:44
Ну на самом деле он его находит, вы перемудрили с рекурсией. Если сделать вывод перед return dir; то вы увидите где он находится.
1
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
19.11.2015, 12:48  [ТС]
Да, спасибо. Я уже понял. Спасибо большое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2015, 12:48
Помогаю со студенческими работами здесь

Проблема с папкой!
Помогите пожалуйста, работал(просто читал ну и еще скачивал) с папкой Books под Ubuntu. Захожу на винду, делает какую-то проверку и в...

Работа с папкой
Всем доброго времени суток. Я новичок в js. Возникла следующая проблемка: Имеется php код который обрабатывает большой количество файлов...

Проблемма с папкой
Допустим есть 2 файла file1.php и file2.php. file1.php лежит в корне сайта а file2.php лежит в папке download. file1.php - ведет...

Работа с папкой
Здраствуйте. филтрую данные по дате в папку далее мне надо эти данные експортировать в ексел кто поможет. код у меня такой. Dim ws As...

Ошибка с временной папкой
Всем привет. Столкнулся с проблемой на компе. При попытке установки Помощника по управлению данными Сони возникла ошибка 1152 ошибка при...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru