2008-12-02 8 views
7

Moja aplikacja Java zapisuje dane w "user.home", ale w przypadku okien nie wydaje się, że jest to poprawna ścieżka do zapisywania informacji o aplikacji (jako przyjaciel mi powiedział). Inną opcją jest użycie api preferencji, ale nie można ustawić lokalizacji hsqldb za pomocą api preferencji. Ponadto chcę, aby wszystkie pliki były dostępne w tym samym folderze (lokalna baza danych, konfiguracja, pamięć podręczna, ...).Zapisywanie ustawień użytkownika/bazy danych/pamięci podręcznej ... w Javie (na każdym systemie operacyjnym)

Szukam przykładowy kod lub ramy, które dba o rzeczy związane z os.

Odpowiedz

3

Na moim systemie WinXP Pro SP3, punkty user.home do C:\Documents and settings\<username> wiele aplikacji tylko przechowywać swoje dane tam (zamiast tej ścieżce + Dane aplikacji, ale niektórzy inni idą w dół, aby tam), tworząc katalog w stylu Unix , tj. dot + nazwa aplikacji (przykłady: .antexplorer, .sqlworkbench, .squirrel-sql, .SunDownloadManager, .p4qt, .gimp-2.4, itp.).

Wygląda na przyzwoitym, powszechną praktyką ...

1

To niezwyczajne, że aplikacja do okna zapisuje dane w user.home, ale nie "źle". Aplikacje systemu Windows lubią rozmieszczać swoje dane w całym miejscu (trochę w rejestrze, trochę w katalogu instalacyjnym aplikacji, trochę w katalogu Windows, trochę w System32, trochę tutaj i trochę tam). Ostatecznie uniemożliwia to czyste tworzenie kopii zapasowych lub usuwanie czegoś, co powoduje słynną "gnicie Windowsa" (tj. Trzeba co kilka miesięcy instalować ponownie).

W każdym razie. Jeśli naprawdę nie chcesz używać user.home (i nie widzę powodu, aby tego nie robić), użyj kodu takiego jak this from Apache commons-lang, aby dowiedzieć się, czy używasz systemu Windows. Jeśli to prawda, wyskakuj okno dialogowe wyboru katalogu, w którym użytkownik może określić, gdzie chce zapisać swoje dane.

Zapisz te informacje w Preferencjach i użyj tej ścieżki przy następnym uruchomieniu aplikacji. W ten sposób użytkownicy mogą określić, gdzie chcą swoich danych, a ty musisz zostawić tylko jedną informację w prefs.

1

Dla aplikacji "foo" utworzyłbym katalog o nazwie ".foo" wewnątrz user.home. Dla Windows będzie wyglądać trochę dziwnie, ale prawie nikt nigdy nie zagląda do tego katalogu (i tak jest wypełniony nieokreślonymi katalogami) i na Linux/Solaris/... spowoduje to ukryty katalog, który nie zaśmieca katalogu domowego użytkowników naocznie.

+0

Wiele aplikacji to robi, pidgin itp. – SCdF

0

Problem nie dotyczy Wiindows, ale standardowej konfiguracji języka Java.

długa dyskusja http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931>Here

Radziłbym to zbieranie się na '-D MYLOC =% USERPROFILE%' mienia w linii poleceń.

Zauważ, że dostaniesz tylko "USERPROFILE", jeśli użytkownik zrobił login na pulpicie, to nie zostanie ustawione, jeśli użytkownik zalogował się zdalnie z citrix lub podobnym lub przez ssh, także, coprporate desktops bałagan z tym ustawieniem i może ustawić go na coś bezużytecznego.

1

dynamicznie czytać (z kodem) wartość APPDATA zmiennej środowiskowej i przechowywać swoje pliki konfiguracyjne w %APPDATA%\\.myapp\config

==> wartość jest zależna od platformy , nie używaj żadnych zakodowanych ścieżek, zawsze czytaj env. var.

Powiązane problemy