2008-12-02 12 views
7

Ứng dụng Java của tôi đang lưu nội dung trong 'user.home' nhưng trên các cửa sổ này dường như không đúng đường dẫn để lưu thông tin ứng dụng (như một người bạn nói với tôi). Một tùy chọn khác là sử dụng các ưu tiên api nhưng không thể thiết lập vị trí hsqldb bằng cách sử dụng các ưu tiên api. Ngoài ra, tôi muốn tất cả các tệp có sẵn trong cùng thư mục (cơ sở dữ liệu cục bộ, cấu hình, bộ nhớ cache, ...).Lưu cài đặt người dùng/cơ sở dữ liệu/bộ nhớ cache ... trong Java (Trên mọi hệ điều hành)

Tôi đang tìm một số mã ví dụ hoặc một khung công tác quản lý nội dung cụ thể cho từng ứng dụng.

Trả lời

3

Trên hệ thống WinXP Pro SP3 của tôi, user.home trỏ tới C:\Documents and settings\<username> Rất nhiều ứng dụng chỉ lưu trữ dữ liệu của chúng ở đó (thay vì đường dẫn này + Dữ liệu ứng dụng, nhưng tạo một thư mục theo kiểu Unix) , I E. dot + tên ứng dụng (ví dụ: .antexplorer, .sqlworkbench, .squirrel-sql, .SunDownloadManager, .p4qt, .gimp-2.4, v.v.).

Trông giống như một thực tế phổ biến phong nha ...

1

Ứng dụng cửa sổ để lưu dữ liệu trong user.home không bình thường nhưng không "sai". Các ứng dụng Windows thích truyền dữ liệu của họ khắp nơi (một chút trong registry, một chút trong thư mục cài đặt của ứng dụng, một chút trong thư mục Windows, một chút trong System32, một chút ở đây và một chút ở đó). Cuối cùng, điều này làm cho nó không thể sao lưu hoặc xóa sạch một cái gì đó mà kết quả trong "thối Windows" nổi tiếng (tức là bạn phải cài đặt lại sau mỗi vài tháng).

Dù sao đi nữa. Nếu bạn thực sự không muốn sử dụng user.home (và tôi không thấy lý do nào không), hãy sử dụng mã như this from Apache commons-lang để tìm hiểu xem bạn có đang chạy trên Windows hay không. Nếu điều này cho kết quả đúng, hãy mở hộp thoại chọn thư mục nơi người dùng có thể chỉ định nơi họ muốn lưu dữ liệu của họ.

Lưu thông tin này trong Tùy chọn và sử dụng đường dẫn này vào lần tiếp theo khi ứng dụng của bạn được bắt đầu. Bằng cách này, người dùng có thể chỉ định nơi họ muốn dữ liệu của họ và bạn chỉ cần để lại một chút thông tin trong các prefs.

1

Đối với ứng dụng "foo", tôi sẽ tạo thư mục có tên ".foo" bên trong user.home. Đối với Windows, nó trông hơi lạ, nhưng hầu như không ai nhìn vào thư mục đó (và nó chứa đầy các thư mục bị che khuất) và trên Linux/Solaris/... nó sẽ dẫn đến một thư mục ẩn không làm lộn xộn thư mục nhà của người dùng trực quan.

+0

Rất nhiều ứng dụng thực hiện việc này, pidgin, v.v. – SCdF

0

Sự cố không phải là Wiindows mà là thiết lập java chuẩn.

dài Thảo luận http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931>Here

tôi sẽ khuyên chọn này lên trên một '-D MYLOC =% USERPROFILE%' bất động sản trên dòng lệnh.

Lưu ý rằng bạn sẽ chỉ nhận được "USERPROFILE" nếu người dùng đã đăng nhập trên máy tính, điều này sẽ không được đặt nếu người dùng đăng nhập từ xa với citrix hoặc tương tự hoặc qua ssh, đồng thời, đồng bộ hóa màn hình lộn xộn xung quanh với cài đặt này và có thể đặt nó vào một cái gì đó không sử dụng được.

1

động đọc (từ mã của bạn) giá trị của APPDATA biến môi trường, và lưu trữ tập tin cấu hình của bạn trong %APPDATA%\\.myapp\config giá trị

==> là nền tảng phụ thuộc , không sử dụng bất kỳ đường dẫn mã hóa cứng nào, luôn đọc env. var.