LINUX.ORG.RU

[java]Хранение временный файлов

 


0

1

Пишу тут следилку за сериалами, возник вопрос.

Как кроссплатформенно хранить картинки и описания к сериалам продолжительное время?

Как хранить настройки я нашел (java.util.prefs), а вот для файлов так и не нашел. Пока тока придумал костыль в виде определения ОС и последущего хранения где надо.

Гугль прошарил.

Подскажите или ключевые слова или классы, спасибо =)


А какая, собственно, возникает проблема?
Форматы файлов изображений и текстов от ОС не зависят. Или не знаете, как определить, в какую директорию их нужно положить?

proud_anon ★★★★★ ()
Ответ на: комментарий от proud_anon

Если вопрос в том, как кроссплатформенно создавать временные файлы, то:

File.createTempFile(String prefix, String suffix) создает временный файл в директории, которая для этого предназначена.

File.createTempFile(String prefix, String suffix, File directory) создает временный файл в указанной директории.

System.getProperty(«java.io.tmpdir») вернет путь (String) к директории, в которой хранятся временные файлы, но я не уверен, что это входит в стандарт и должно поддерживаться любой виртуальной машиной.

proud_anon ★★★★★ ()
Ответ на: комментарий от proud_anon

Как я понял, createTempFile создает файлы в /tmp или c:\temp – значит они могут быть удалены в любое время, а я хочу что-то типа ~/Library/Application Support/ на Маке или Docs and Settings\Application Data на винде, т.е. не совсем временные, а личные для каждого юзера.

Неправильно тему назвал, видимо =)

Teren ()
Ответ на: комментарий от aydar

Да, но это приводит обратно к тому, что после этого надо проверить какая ОС и решить куда писать: если unix-like, то в home + '.appName/', если винда то home + 'Application Data/VendorName/AppName' итд. В итоге надо знать какая в каждой ОС иерархия директорий...

Нету кроссплатформенного метода «дай директорию для данных программ пользователя»?

Teren ()
Ответ на: комментарий от Teren
C:\Documents and Settings\user1>dir
 Том в устройстве C имеет метку System
 Серийный номер тома: 0CF6-5E68

 Содержимое папки C:\Documents and Settings\user1

25.11.2010  17:29    <DIR>          .
25.11.2010  17:29    <DIR>          ..
04.08.2008  10:04                52 .bash_history
20.05.2008  10:44    <DIR>          .borland
23.05.2008  08:45    <DIR>          .datastudio
05.05.2010  14:55    <DIR>          .executequery
13.04.2009  08:15    <DIR>          .fontconfig
27.04.2010  13:49    <DIR>          .gimp-2.4
29.10.2010  14:34    <DIR>          .gimp-2.6
03.11.2010  10:48                 2 .gtkrc-2.0
04.03.2010  09:22    <DIR>          .ireport
27.02.2010  14:28    <DIR>          .jadclipse
05.04.2010  07:34                 0 .javafx_eula_accepted
04.03.2010  09:15    <DIR>          .magicdraw
05.04.2010  07:47    <DIR>          .nbi
05.04.2010  07:51    <DIR>          .netbeans
06.04.2010  09:22    <DIR>          .netbeans-derby
05.04.2010  07:41    <DIR>          .netbeans-registration
27.04.2010  13:48             6 024 .recently-used.xbel
03.09.2008  08:33    <DIR>          .thumbnails
26.11.2010  12:00    <DIR>          .VirtualBox
26.02.2010  10:36    <DIR>          dmcl
10.12.2009  09:31    <DIR>          Documentum
26.02.2010  15:05    <DIR>          flexdock
01.03.2010  16:06               288 install.log
24.11.2010  15:18                12 intlname.ols
16.07.2010  07:32               224 processnfo.log
05.02.2009  15:37    <DIR>          PsiData
27.07.2010  13:58               600 PUTTY.RND
27.07.2010  13:50             1 696 sqlnet.log
01.03.2010  16:06                 0 trace.log
26.11.2010  07:45    <DIR>          Tracing
01.06.2010  10:47    <DIR>          VSWebCache
27.02.2010  14:43    <DIR>          workspace
14.08.2008  07:42    <DIR>          Ðàáî÷èé ñòîë
12.07.2006  15:08    <DIR>          Главное меню
09.03.2010  10:08    <DIR>          Избранное
10.11.2010  12:20    <DIR>          Мои документы
26.11.2010  11:58    <DIR>          Рабочий стол
              10 файлов          8 898 байт
              29 папок  15 930 880 000 байт свободно
aydar ★★★★★ ()
Ответ на: комментарий от aydar

Ха, не знал, что в винде так делают, не пользуюсь ею =)

А разве это не костыль? Винда же .файлы не делает hidden?

Teren ()
Ответ на: комментарий от Teren

>Нету кроссплатформенного метода «дай директорию для данных программ пользователя»?
А, вот в чем вопрос.
Многие программы на Java, что на винде, что на Unix-like-системах, пишут в home\.appName и не заморачиваются.

Мне не известны четкие рекомендации Microsoft по поводу использования Application Data, знаю только, что она делится на общую на локальном компьютере, пользовательскую перемещаемую по сети и пользовательскую, но не перемещаемую по сети. Еще знаю, что не рекомендуется писать в нее напрямую, указывая путь, нужно запрашивать путь к хранилищу данных через Windows API и какой путь укажут, туда и писать.

Не знаю прямого аналога в Линуксе, но вряд ли это будет /home.

Одним словом, я бы не стал заморачиваться с Application Data, это виндовс-специфическая, а не кроссплатформенная вещь. Можно хранить данные в home. Или можно спросить у пользователя, где хранить данные, положить этот путь в Preferences и там все хранить.

Хотя, может, кто-нибудь лучше знает.

proud_anon ★★★★★ ()
Ответ на: комментарий от proud_anon

>Многие программы на Java, что на винде, что на Unix-like-системах, пишут в home\.appName и не заморачиваются.
Причем не только на Java.

proud_anon ★★★★★ ()
Ответ на: комментарий от Teren

> А разве это не костыль? Винда же .файлы не делает hidden?

это не костыль, а игнорирование особенностей отдельно взятой ОС в пользу отсутствия лишнего захламления кода всяким говном типа условной компиляции и/или условного выполнения, зависимого от ОС.

korvin_ ★★★★★ ()
Ответ на: комментарий от rival

На самом деле, там все очень классно продумано: кеши в ~/.cache; конфиги в ~/.config; данные программы в ~/.local/share. Таким образом можно безболезненно удалять к примеру ~/.config/app (в случае ошибок в конфиге, или его повреждения) при этом сохраняя данные и кеши. Или удалив ~/.cache/app почистить кеши, сохранив настройки и данные приложения.

fat_angel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.