2012-10-26 29 views
8

Tôi đang tìm một cách đơn giản, đa nền tảng, trên JVM, để lấy các thư mục thích hợp để lưu trữ các cài đặt ứng dụng và dữ liệu bộ nhớ cache. Ví dụ, trên Linux dưới thông số kỹ thuật XDG:Đơn giản, đa nền tảng để có được các đường dẫn desktop nổi tiếng trong Java?

  • config trong ~/.config/appname
  • bộ nhớ cache trong ~/.cache/appname

của Windows thứ đi trong C\Users\user\Application Data hoặc một số như vậy (trên Win 7); Tôi thu thập rằng Mac đặt công cụ theo ~/Library/Application Settings.

Có cuộc gọi đa nền tảng để nhận các vị trí đường dẫn này không? Tôi đã không thể tìm thấy một, mặc dù tôi tìm thấy một số câu hỏi về nó. Có một số thư viện đã triển khai đúng logic cho hầu hết các nền tảng máy tính để bàn phổ biến không?

Trường hợp xấu nhất, tôi chỉ có thể tra cứu user.home và giả vờ mọi thứ là môi trường Linux dựa trên XDG. Nhưng nếu thật dễ dàng để có được đúng thư mục cho hệ điều hành của người dùng, tôi muốn làm như vậy.

Trả lời

2

Lớp FileSystemView là lớp duy nhất tôi biết có quyền truy cập vào một số thư mục chung như thế này và là nền tảng chéo. Tham khảo tài liệu here

Lớp này chứa một số phương pháp có thể hữu ích, chẳng hạn như getHomeDirectory()getDefaultDirectory(). Lớp này được sử dụng bởi JFileChooser cho giao diện Swing. Tôi biết nó không trực tiếp trỏ đến các thư mục cấu hình và bộ nhớ cache, nhưng nó có thể là một bước đi đúng hướng cho bạn.

Đối với các ứng dụng của riêng tôi, tôi sử dụng phương pháp tiếp cận tốt nhất tiếp theo bằng cách cố gắng thực hiện tất cả cấu hình và cài đặt có trong chính ứng dụng - ví dụ: tạo thư mục "config" trong thư mục nơi ứng dụng được cài đặt. Mặc dù nó không phải là một vị trí trung tâm cho cấu hình cho toàn bộ hệ điều hành, ít nhất nó giữ nó trong bối cảnh ứng dụng java.

2

Về cơ bản, chúng tôi thiết lập lớp tiện ích cung cấp thông tin này, chủ yếu dựa trên thuộc tính hệ thống user.homeos.name.

Chúng tôi có một loạt các phương pháp cho phép chúng ta xây dựng lên một vị trí con đường, một cái gì đó giống như ...

SystemUtilities.getApplicationSettingsPath("Name of my awesome app"); 
Các vấn đề liên quan