System.getProperty("java.io.tmpdir")
в Windows возвращает что-то наподобие:C:\Windows\Temp\
А в Linux мне приходит вот что:
/tmp
Обратите внимание - в первом случае завершающий слеш есть, а во втором - нет, что требует дополнительной проверки в коде.
"Java: написано однажды - тестируем везде" (c)
Да потому что нехрен генерировать имена файлов руками, конструктор File(String parent, String child) для чего придуман?
А если нужно просто временный файл создать, для этого правильнее использовать File.createTempFile(String prefix, String suffix).
Unknown
29 мая 2009 г. в 11:54Та шо ж ты аггрессивный такой!
Мне просто нужна строка с этой проперти, причем со слешом в конце. Она потом пойдет в либу заказчика, лежащую в Trunk, где к ней _руками_ допишут имя каталога и будут дрюкать...
В аутсорсинге ведь не все можно править по своему желанию, если ты еще не забыл ;)
Sergey Borodavkin
29 мая 2009 г. в 17:02В любом случае, приехавшее имя файла проверяют на
File.isDirectory() и File.exists()
B для конструирования имени файла (не через File(String parent, String child)), всегда используют системо-зависимый разделитель имени файлов, File.separator. В случае если он будет присутсвовать дважды, не произойдет ничего страшного
Анонимный
2 сентября 2009 г. в 16:03Тут вот что примечательно: в случае Windows (C:\\Temp\\Pse\\) - действительно не произойдет (поскольку первый слеш, фактически, эскейпит второй), а в Linux (//tmp//pse) - как раз произойдет - exists() вернет false.
Sergey Borodavkin
3 сентября 2009 г. в 07:28