![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
lazycat |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 15.7.2007 Репутация: 1 Всего: 1 |
Доброго времени суток всем!
Простите за чайный вопрос, но попал в тупик. Задача: есть имя файла с символами замещения (например, file*.txt). Как получить список всех файлов, удовлетворяющих шаблону? Конечно, можно было бы воспользоваться File.list() а потом сделать грамматический разбор, но наверное должен быть более простой способ? Заранее благодарен всем откликнувшимся |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 2 Всего: 10 |
Именно Fil.list()! Только с правильным аргументом (FilenameFilter):
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ulysses4j, у тебя неправильная регулярка.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 2 Всего: 10 |
Поясните, пожалуйста, в чем: эта регулярка вывела файлы "file1.txt fileFun.txt".
Добавлено через 4 минуты и 28 секунд И не вывела "fileWoh" Добавлено через 5 минут и 26 секунд А более тонкую подводку человек уже должен сам делать, исходя из того, что ему нужно: в конце концов, вопрос заключался не в этом. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Может надо было вторую точку сделать точкой, а не любым символом?
-------------------- Lost.... |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
и вообще чаще, проще обойтись startsWith()/endsWith() быстрее будет работать. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
lazycat |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 15.7.2007 Репутация: 1 Всего: 1 |
Большое спасибо, Ulysses4j!
Правда, это несколько не то, что я ожидал. Я искал "нечто", чему бы передал шаблон, а оно мне в ответ Enumeration с именами файлов, соответствующих шаблону. В С подобное есть и я удивлялся, почему бы ему не быть в Java. Решение, которое Вы прислали, хорошее, но при этом надо просматривать переданную строку, заменять в ней * на .*, ? на . , потом предварять каждый "ненормальный" символ обратным слэшем, одним словом код разрастается. Увы, наши желания часто расходятся с действительностью Еще раз спасибо! |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Какую строку? Зачем заменять? Ulysses4j использовал шаблон, возвращаются файлы, которые соответствуют этому шаблону.. -------------------- Lost.... |
|||
|
||||
lazycat |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 15.7.2007 Репутация: 1 Всего: 1 |
Так пользователь же не знает языка регулярных выражений. Единственное, что для него доступно - это символы замещения ? и * в именах файлов. А сделать из того, что получу шаблон - это моя задача.
|
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
хе, теперь понятно. Ну тут уж мы не виноваты, что пользователь шаблоны для С знает, а для Java не выучил.. ![]() -------------------- Lost.... |
|||
|
||||
lazycat |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 15.7.2007 Репутация: 1 Всего: 1 |
Странное утверждение. Есть шаблоны для работы с файловой системой (по сути они включают только два символа: * и ?. Их знает и применяет пользователь. Есть шаблоны регулярных выражений, те, которые используем мы. В C есть функции, которые позволяют получить набор файлов, соответствующих тому шаблону, который ЗАДАЛ ПОЛЬЗОВАТЕЛЬ. При этом нет необходимости использовать регулярные выражения. (Да по большому счету, до появления LEX и YACC в C они и не поддерживались.) В Java подобных классов и методов нет (или я их пока не нашел). Вот и все. И не надо требовать от пользователя знания регулярных выражений. |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Смайлы для твого и существует, чтобы передавать эмоции. Это была шутка, не принимайте близко к сердцу. И вообще - это оффтоп. Пора заканчивать. -------------------- Lost.... |
|||
|
||||
lazycat |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 15.7.2007 Репутация: 1 Всего: 1 |
Это точно. Спасибо всем за участие |
|||
|
||||
alex_nevolin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 13.8.2007 Репутация: 3 Всего: 4 |
Подниму вопрос, но в новом ракурсе:
Есть шаблон для поиска файлов "*/popups/*" - найти все файлы в подпапках popups Сделал regexp ".*/popups/.*" имплементировал фильтр:
Проблема в том что getCanonicalPath() is system-dependent. т.е. получаю разные слэши для Windows и Unix like систем. Для windows приходится делать regexp ".*\\\\popups\\\\.*" Как с этим боротся? Решения System.getProperty("os.name") прошу не предлагать. Может надо сам шаблон подстроить по обе оси? Может можно как-то работать с "file path" sytem independent? |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
alex_nevolin, попробуйте использовать File.separator:
-------------------- Lost.... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |