Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по чтению файлов из директории. / 16 сообщений из 16, страница 1 из 1
20.01.2007, 20:37:21
    #34270087
DesertEagle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
Всем привет!

Помогите пожалуйста с небольшой проблемкой.

Имеем:
- директорию, в которую "капают" файлы
- 5 инстансов процесса, которые должны брать файл и обрабатывать его. 5 копий процесса работают параллельно в одной директории.
- механизм параллельной обработки есть и работает, но не совсем как хотелось бы.

Но есть проблема:
- метод класса File listFiles() передает в массив ВЕСЬ список файлов в директории. Пока с этим и работаем с горем пополам, но теряем в производительности и делаем лишние действия. КАК можно сделать так, что бы передать классу не все имена файлов, а одно единственное? Можно это как - нибудь сделать?

Спасибо.
...
Рейтинг: 0 / 0
20.01.2007, 22:23:08
    #34270154
Вопрос по чтению файлов из директории.
Использовать метод listFiles(FilenameFilter filter). Или использовать JNI.
...
Рейтинг: 0 / 0
21.01.2007, 07:54:20
    #34270294
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
DesertEagle
- метод класса File listFiles() передает в массив ВЕСЬ список файлов в директории. Пока с этим и работаем с горем пополам, но теряем в производительности и делаем лишние действия. КАК можно сделать так, что бы передать классу не все имена файлов, а одно единственное? Можно это как - нибудь сделать?
Не понял. Нужен один файл, причём тут директория. Нужен любой файл из директории?
...
Рейтинг: 0 / 0
21.01.2007, 14:13:24
    #34270473
DesertEagle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
тот кого забанили

А можно про фильр поподробнее (если можно примерчик), как один файл из ста тысяч выбрать?

LINUXER

В директории много файлов. В класс нужно передать как - то одно единственное имя. Можно любое. И так сто тысяч раз. :)
...
Рейтинг: 0 / 0
21.01.2007, 14:46:05
    #34270494
234234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
или я тебя не понимаю или тебе нужен обычный конструтор new File()
...
Рейтинг: 0 / 0
21.01.2007, 14:56:43
    #34270503
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
DesertEagle
В директории много файлов. В класс нужно передать как - то одно единственное имя. Можно любое. И так сто тысяч раз. :)
Для производительности - пореже вызывать listFiles();
File[] fileList=file.listFiles();
fileList[0] - 1файл
...
Рейтинг: 0 / 0
21.01.2007, 17:16:25
    #34270595
DesertEagle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
flist[0] как раз и не подходит (скорее всего), потому что файлов может накопиться порядка ста тысяч, время обработки одного файла секунд 15 максимум. То есть получается, что каждые 15 секунд нужно вызывать список файлов и брать нулевую позицию.

Есть ли механизм другой? Если нет, то буду изобретать велосипед.
...
Рейтинг: 0 / 0
21.01.2007, 18:17:16
    #34270641
jusio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
А вы чем пользуетесь для получения списка файлов? listFiles() или list() ? Первый выдаёт список файлов и два-три раза медленее второго, который выдаёт список имён файлов...
...
Рейтинг: 0 / 0
21.01.2007, 19:14:19
    #34270688
DesertEagle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
Пользуюсь listFiles(). Если принять, что возвращаются только имена при помощи другого метода, то это поможет не сильно. Все равно же придется прочитать все файлы с директории.
...
Рейтинг: 0 / 0
21.01.2007, 19:21:36
    #34270698
Вопрос по чтению файлов из директории.
DesertEagleВсе равно же придется прочитать все файлы с директории.
Если вы не знаете заранее имени файла, то в Java нет другого способа найти нужный файл. Для реализации поиска вам придется использовать JNI (если нет возможности работать через статические методы или каким-либо образом общаться между процессами).
...
Рейтинг: 0 / 0
21.01.2007, 19:23:33
    #34270700
Вопрос по чтению файлов из директории.
DesertEagle тот кого забанили

А можно про фильр поподробнее (если можно примерчик), как один файл из ста тысяч выбрать?

Вы в курсе, что с Java поставляется обширная документация и даже исходники классов?
В установленной JDK есть архив src.zip. В конце концов распакуйте его и посмотрите, как нужно работать с фильтрами, если нет под рукой документации.
...
Рейтинг: 0 / 0
21.01.2007, 19:39:50
    #34270715
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
Э.. Я в исходники не заглядывал, но почему-то мне кажется, что выборка файлов на основе фильтра идет далеко не средствами операционной системы. То есть выгоды никакой.

Но загляну, а то мало ли чушь сказал :)
...
Рейтинг: 0 / 0
21.01.2007, 19:41:22
    #34270719
Вопрос по чтению файлов из директории.
mysterioЭ.. Я в исходники не заглядывал, но почему-то мне кажется, что выборка файлов на основе фильтра идет далеко не средствами операционной системы. То есть выгоды никакой.

В-общем-то, я уже именно это и сказал.
...
Рейтинг: 0 / 0
22.01.2007, 11:37:13
    #34271529
Go_For_It
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
ну да, как варианты
1. фильтр(скажем, брать файлы начиная с заданной даты)
2. jni

и взять то, что приемлемо по производительности.

а может быть как вариант, переносить "старые" файлы в другое место? тогда не будет тормозов
по считыванию "ненужных" файлов
...
Рейтинг: 0 / 0
22.01.2007, 11:46:44
    #34271576
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
Да что вы к этим фильтрам прицепились?!
Что такое фильтр? Это просто метод boolean accept(File f) - то есть вначале получаются ВСЕ файлы из директории, потом КАЖДЫЙ из них проходит через фильтр и конечное множество возвращается из listFiles(FileFilter f). ГДЕ вы здесь нашли увеличение производительности? Вот я в упор не нахожу.

JNI это бред имхо. Я не специалист в C/C++, но не вижу особых способов это взять. Интересно, это пишут, когда не знают, как это сделать на Java? Типа есть магический JNI, который решает все проблемы человечества :)

1. Взяли listFiles(). Запомнили время.
2. Обработали его (все файлы из множества полученных).
3. Если вы удаляете файл после этого, берите listFiles() опять. Если не удаляете, придется фильтровать по дате(к слову выше я писал, производительность не увеличится, просто удобно).

А так разумеется, фигачить в каждом потоке listFiles().. Вы о пулах заданий что-нибудь слышали?
В Java есть прекрасные механизмы синхронизации и готовые структуры для таких задач.
...
Рейтинг: 0 / 0
22.01.2007, 11:48:15
    #34271581
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по чтению файлов из директории.
Вот сразу не заметил. У самого такая мысль возникла. Предыдущий автор поста предложил реально хорошую идею: перемещать файлы куда-нибудь в другой каталог.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по чтению файлов из директории. / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]