Tôi muốn ứng dụng máy tính để bàn java của mình biết liệu người dùng có đang chạy nó lần đầu tiên trên máy tính đó hay không. Vì tệp jar có thể được chia sẻ giữa những người dùng, tôi không muốn ghi vào một tệp bên trong tệp jar. Rõ ràng là có rất nhiều cách để làm điều này nhưng bạn sẽ đề nghị những gì? (Nó phải là nền tảng chéo). thanksPhát hiện người dùng lần đầu tiên trong ứng dụng java
Trả lời
Hãy thử sử dụng Preferences và các phương thức systemRoot() hoặc userRoot() để có được tùy chọn toàn hệ thống hoặc người dùng cụ thể.
Tôi khuyên bạn nên sử dụng thư mục nhà của người dùng nơi bạn có thể đặt tệp cài đặt cụ thể cho người dùng. Điều này sẽ cho phép bạn phát hiện người dùng lần đầu cũng như ghi nhớ bất kỳ tùy chọn nào họ có thể chọn.
System.getProperty("user.home"); // returns the home directory cross platform
Đây là một giải pháp hiệu quả ngoài khóa học, có thể không phải là rất đẹp trong trường hợp này mặc dù, bởi vì không có cài đặt người dùng cụ thể cần thiết. Chắc chắn ứng dụng có thể đặt một tệp trống trong thư mục chính (nếu tệp tồn tại không phải là người dùng lần đầu tiên), nhưng người dùng có thể bị khó chịu với tệp như vậy trong thư mục chính và xóa tệp đó. –
Mỗi hệ điều hành có một số thư mục cụ thể mà các dữ liệu người dùng được lưu trữ (/home
, C:\Users
, C:\Documents and settings
). Giá trị này thường có sẵn trong JVM với thuộc tính hệ thống "user.home".
Lưu trữ một số tệp để lưu trữ cấu hình người dùng của bạn. Tất nhiên, mỗi hệ điều hành có cách làm điều đó (thư mục "Dữ liệu ứng dụng", thư mục có tên bắt đầu bằng dấu chấm), bạn nên chắc chắn rằng bạn tuân thủ nó.
- 1. Phát hiện lần chạy đầu tiên của ứng dụng
- 2. Phát hiện cài đặt lần đầu tiên trong iOS NOT NSUserDefaults
- 3. Phát hiện khi người dùng nhấn enter trong Java
- 4. Phát hiện người dùng đã đăng nhập trên máy tính bằng ứng dụng web Java
- 5. Tại sao "SỬ DỤNG GRANT" được tạo lần đầu tiên tôi cấp đặc quyền người dùng?
- 6. Regex chỉ xuất hiện lần đầu tiên?
- 7. Phát hiện cài đặt người dùng cho Làm mới ứng dụng nền trong iOS 7
- 8. Ứng dụngDidFinishLaunching: được gọi khi ứng dụng được cập nhật và khởi chạy lần đầu tiên?
- 9. Phát hiện tải trang đầu tiên với jQuery?
- 10. cách phát hiện xem người dùng có ứng dụng trong Cocoa
- 11. Phát hiện người dùng đã đăng nhập trên máy tính bằng cách sử dụng Java
- 12. Cách khởi chạy hoạt động chỉ một lần khi ứng dụng được mở lần đầu tiên?
- 13. Xác định xem ứng dụng android có phải là lần đầu tiên sử dụng
- 14. Học Oracle lần đầu tiên
- 15. Phát hiện người dùng trực tuyến?
- 16. EF6/Code Đầu tiên: Siêu chậm trong lần truy vấn đầu tiên, nhưng chỉ trong Debug
- 17. Phát hiện ứng dụng email
- 18. authenticateWithCompletionHandler: không được dùng nữa: lần đầu tiên không được chấp nhận trong iOS 6.0
- 19. Phát hiện tiện ích mở rộng Chrome lần đầu tiên chạy/cập nhật
- 20. Tác vụ trì hoãn: lập lịch thực hiện lần đầu tiên trong Spring 3
- 21. Python/NumPy lần xuất hiện đầu tiên của subarray
- 22. Cách phát hiện khi người dùng khởi chạy một ứng dụng khác? (Android)
- 23. Sử dụng readlines trong python? Lần đầu tiên
- 24. Bản đồ Mongo Giảm lần đầu tiên
- 25. Nhấp Một lần - Tất cả người dùng
- 26. presentModalViewController trong viewDidLoad khi khởi chạy lần đầu tiên
- 27. Làm cách nào để tạo UIAlertView chỉ xuất hiện một lần, lúc khởi động đầu tiên của ứng dụng iPhone?
- 28. cách phát hiện xem bàn phím người dùng có thuộc AZERTY trong Java không?
- 29. Làm cách nào để phát triển hộp thoại đi qua xuất hiện trên lần khởi chạy đầu tiên?
- 30. lần đầu tiên tạo kết quả Dự án Ứng dụng trong lỗi java.lang.NullPointerException
Điều này có vẻ thực sự gọn gàng, nhưng có thể hơi nguy hiểm? các tùy chọn hệ thống/người dùng có thể dễ dàng bị xóa bởi ứng dụng khác hoặc theo cách thủ công bởi người dùng, phải không? (có lẽ đó là rất không phổ biến mặc dù ..?) –
Như với bất kỳ tùy chọn giải pháp khác có thể được thay đổi bởi người dùng/ứng dụng có quyền để làm điều đó. Nếu bạn phải ngăn xung đột giữa các tùy chọn của các ứng dụng khác nhau, hãy xem xét sử dụng [systemNodeForPackage (Class)] (http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#systemNodeForPackage % 28java.lang.Class% 29) hoặc [userNodeForPackage (Class)] (http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#userNodeForPackage%28java.lang .Class% 29) phương pháp. – szhem
[Ở đây] (http://mindprod.com/jgloss/preferences.html#LOCATION) cũng là một số thông tin về nơi các tùy chọn thường được lưu trữ trong các hệ thống khác nhau. Và [ở đây] (http://java.sun.com/developer/technicalArticles/releases/preferences/) là một bài viết kỹ thuật khá cũ nhưng hữu ích về 'Preferences'. – szhem