![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| alexey123456 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
Добрый день.
Работает сервлет, создает временную директорию с именем, завязанным от сессии, например: "run1a7d94e128f0333b0af335a99210-1291204215593". Далее внутри этой директории появляется файл, после чего код ниже выдает рез-т false, т.е. файл не найден:
tempDir точно равен текущей созданной директории. Если вывести строчку "C:\\Environment\\" + tempDir.trim() + "\\source.exe" на экран и вставить в проводник, файл успешно откроется (в данном случае source.exe ). Почему же files.exists() выдает false, не ясно.. |
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
Может файл появляется чуть позже чем исполняется этот код или файловая система, по каким-то причинам, не даёт процессу увидеть этот файл.
Выведи все файлы в директории с помощью file.list() и проверь какие файлы есть в дире на момент отработки этого кода. Также проверь атрибуты директории и source.exe Это сообщение отредактировал(а) dobrolub - 1.12.2010, 20:07 |
|||
|
||||
| alexey123456 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
Да, именно так судя по всему и происходит. Файл уже создан, far например или обычный проводник его видит, а программа - нет! Если выдать все содержимое созданного каталога, то source.exe там не будет, но будут старые файлы, созданные ранее вместе с каталогом. Притом, если позже вручную попробовать проверить на существование данный файл, вернется true... Не понятно, как исправить эту ситуацию... Добавлено @ 20:12 Кстати, может быть проблема в сервере GlassFish. Он запускается автоматически из NetBeans, и для того, чтобы внести изменения, надо выполнить redemploy'ing всего проекта. Хотя врятли - директории создаются вне проекта, в отдельной папке в корне C. Это сообщение отредактировал(а) alexey123456 - 1.12.2010, 20:14 |
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
Вероятно надо пересмотреть логику работы программы с учётом того, как этот файл появляется в той директории. Ещё один вопрос, нужно ли этот файл класть в директорию для каждого юзера? Если юзеров много, то есть вероятность забить диск и существенно снизить быстродействие программы - файловые операции одни из самых медленных.
|
|||
|
||||
| alexey123456 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
Там не совсем директории для юзверей. Это что-то вроде одной тестирующей единицы - создается временная директория по jsession и времени, в нее кладется файл-исходник. Затем из исходника собирается программа в exe или class файл (для явы). И вот затем как раз проверяется наличие собранной программы (exe или class файл). |
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
Это происходит в том-же потоке или в другом? Если в том-же, и с помощью java.lang.Process, то надо ждать пока Process завершиться с помощью waitFor() |
|||
|
||||
| alexey123456 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
Помогло использование
Большое спасибо. |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |