
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.01.2007, 20:37:21
|
|||
|---|---|---|---|
|
|||
Вопрос по чтению файлов из директории. |
|||
|
#18+
Всем привет! Помогите пожалуйста с небольшой проблемкой. Имеем: - директорию, в которую "капают" файлы - 5 инстансов процесса, которые должны брать файл и обрабатывать его. 5 копий процесса работают параллельно в одной директории. - механизм параллельной обработки есть и работает, но не совсем как хотелось бы. Но есть проблема: - метод класса File listFiles() передает в массив ВЕСЬ список файлов в директории. Пока с этим и работаем с горем пополам, но теряем в производительности и делаем лишние действия. КАК можно сделать так, что бы передать классу не все имена файлов, а одно единственное? Можно это как - нибудь сделать? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.01.2007, 22:23:08
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
Использовать метод listFiles(FilenameFilter filter). Или использовать JNI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 07:54:20
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
DesertEagle - метод класса File listFiles() передает в массив ВЕСЬ список файлов в директории. Пока с этим и работаем с горем пополам, но теряем в производительности и делаем лишние действия. КАК можно сделать так, что бы передать классу не все имена файлов, а одно единственное? Можно это как - нибудь сделать? Не понял. Нужен один файл, причём тут директория. Нужен любой файл из директории? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 14:13:24
|
|||
|---|---|---|---|
|
|||
Вопрос по чтению файлов из директории. |
|||
|
#18+
тот кого забанили А можно про фильр поподробнее (если можно примерчик), как один файл из ста тысяч выбрать? LINUXER В директории много файлов. В класс нужно передать как - то одно единственное имя. Можно любое. И так сто тысяч раз. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 14:46:05
|
|||
|---|---|---|---|
|
|||
Вопрос по чтению файлов из директории. |
|||
|
#18+
или я тебя не понимаю или тебе нужен обычный конструтор new File() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 14:56:43
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
DesertEagle В директории много файлов. В класс нужно передать как - то одно единственное имя. Можно любое. И так сто тысяч раз. :) Для производительности - пореже вызывать listFiles(); File[] fileList=file.listFiles(); fileList[0] - 1файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 17:16:25
|
|||
|---|---|---|---|
|
|||
Вопрос по чтению файлов из директории. |
|||
|
#18+
flist[0] как раз и не подходит (скорее всего), потому что файлов может накопиться порядка ста тысяч, время обработки одного файла секунд 15 максимум. То есть получается, что каждые 15 секунд нужно вызывать список файлов и брать нулевую позицию. Есть ли механизм другой? Если нет, то буду изобретать велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 18:17:16
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
А вы чем пользуетесь для получения списка файлов? listFiles() или list() ? Первый выдаёт список файлов и два-три раза медленее второго, который выдаёт список имён файлов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 19:14:19
|
|||
|---|---|---|---|
|
|||
Вопрос по чтению файлов из директории. |
|||
|
#18+
Пользуюсь listFiles(). Если принять, что возвращаются только имена при помощи другого метода, то это поможет не сильно. Все равно же придется прочитать все файлы с директории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 19:21:36
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
DesertEagleВсе равно же придется прочитать все файлы с директории. Если вы не знаете заранее имени файла, то в Java нет другого способа найти нужный файл. Для реализации поиска вам придется использовать JNI (если нет возможности работать через статические методы или каким-либо образом общаться между процессами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 19:23:33
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
DesertEagle тот кого забанили А можно про фильр поподробнее (если можно примерчик), как один файл из ста тысяч выбрать? Вы в курсе, что с Java поставляется обширная документация и даже исходники классов? В установленной JDK есть архив src.zip. В конце концов распакуйте его и посмотрите, как нужно работать с фильтрами, если нет под рукой документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 19:39:50
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
Э.. Я в исходники не заглядывал, но почему-то мне кажется, что выборка файлов на основе фильтра идет далеко не средствами операционной системы. То есть выгоды никакой. Но загляну, а то мало ли чушь сказал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2007, 19:41:22
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
mysterioЭ.. Я в исходники не заглядывал, но почему-то мне кажется, что выборка файлов на основе фильтра идет далеко не средствами операционной системы. То есть выгоды никакой. В-общем-то, я уже именно это и сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2007, 11:37:13
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
ну да, как варианты 1. фильтр(скажем, брать файлы начиная с заданной даты) 2. jni и взять то, что приемлемо по производительности. а может быть как вариант, переносить "старые" файлы в другое место? тогда не будет тормозов по считыванию "ненужных" файлов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2007, 11:46:44
|
|||
|---|---|---|---|
Вопрос по чтению файлов из директории. |
|||
|
#18+
Да что вы к этим фильтрам прицепились?! Что такое фильтр? Это просто метод boolean accept(File f) - то есть вначале получаются ВСЕ файлы из директории, потом КАЖДЫЙ из них проходит через фильтр и конечное множество возвращается из listFiles(FileFilter f). ГДЕ вы здесь нашли увеличение производительности? Вот я в упор не нахожу. JNI это бред имхо. Я не специалист в C/C++, но не вижу особых способов это взять. Интересно, это пишут, когда не знают, как это сделать на Java? Типа есть магический JNI, который решает все проблемы человечества :) 1. Взяли listFiles(). Запомнили время. 2. Обработали его (все файлы из множества полученных). 3. Если вы удаляете файл после этого, берите listFiles() опять. Если не удаляете, придется фильтровать по дате(к слову выше я писал, производительность не увеличится, просто удобно). А так разумеется, фигачить в каждом потоке listFiles().. Вы о пулах заданий что-нибудь слышали? В Java есть прекрасные механизмы синхронизации и готовые структуры для таких задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2146882]: |
0ms |
get settings: |
12ms |
get forum list: |
22ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
80ms |
get topic data: |
19ms |
get forum data: |
4ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 296ms |
| total: | 512ms |

| 0 / 0 |
