Vì lý do gì đó, đôi khi tôi cần tìm thư mục My Documents của người dùng hiện tại trên Windows trong một chương trình Java để đọc một số tệp. Nhưng theo như tôi có thể nói, không có cách nào để làm điều đó mà không phải là sai lầm nghiêm trọng.Phương pháp thích hợp để tìm thư mục My Documents của người dùng trên Windows bằng Java?
Cách sai đầu tiên: System.getProperty ("user.home");
Tại sao nó không hoạt động:
- Nó chỉ trả về thư mục \ username \; Tôi cần thêm "\ Documents \" vào cuối để lấy thư mục Documents ... và nó chỉ hoạt động bằng tiếng Anh.
- Sun bugs 6519127 và 4787931. Java tìm thư mục chính của người dùng trên Windows bằng cách đọc khóa đăng ký không dùng nữa * để tìm Máy tính để bàn, sau đó chọn bố mẹ; phương pháp này có nhiều vấn đề đã biết sẽ dễ dàng gây ra một thư mục hoàn toàn sai được trả về. Các lỗi là 3,75 năm và 8 tuổi mà không sửa chữa.
Cách thứ hai sai: Sử dụng chương trình đọc đăng ký để nhận thư mục Cá nhân của người dùng, là Tài liệu của tôi (nhưng i18n'd).
Tại sao nó sẽ không hoạt động:
Trong khi nó khắc phục sự cố chỉ có tiếng Anh, nó vẫn sử dụng cùng một khu vực đăng ký không được chấp nhận, vì vậy các lỗi vẫn áp dụng cho nó.
Khoá đăng ký không dùng nữa nói để sử dụng cuộc gọi gốc (SHGetKnownFolderPath) mà tôi rõ ràng không thể làm từ Java.
Cách sai thứ ba:
JFileChooser fr = new JFileChooser();
FileSystemView fw = fr.getFileSystemView();
File documents = fw.getDefaultDirectory();
Tại sao nó sẽ không hoạt động: Nó hoạt động tuyệt vời!
Trừ khi không. Trong khi tôi đã có một chương trình sử dụng này mở và chạy trong nền, tôi đã mở một trò chơi DirectX (Fallout: New Vegas). Chương trình Java ngay lập tức chấm dứt không có dấu vết ngăn xếp. Luôn luôn tái sản xuất (đối với tôi trên trò chơi đó, và ai biết điều gì khác). Không tìm được lỗi Sun #.
Vì vậy, có phương pháp nào để tìm thư mục Tài liệu của người dùng, trên Windows, từ Java, không có sự cố đã biết không?
(Đây là một câu hỏi lớn thoải mái.)
* (Điều quan trọng là "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders")
Tương tự như [làm thế nào để tìm thấy “My Documents” thư mục ] (http://stackoverflow.com/questions/1503555/how-to-find-my- tài liệu-thư mục). Nó đề cập đến winfoldersjava, một trình bao bọc JNI xung quanh SHGetSpecialFolderPath. Vì bạn đang sử dụng chức năng dành riêng cho Windows, JNI sẽ ổn. –
Bạn có thực sự cô lập những sự cố này với đoạn mã từ cách thứ ba không? Bởi vì phương pháp này dường như được sử dụng bởi Swings sở hữu hộp thoại Open file (JFileCHooser) nên có vẻ như rất nhiều ứng dụng Java sẽ phải chịu đựng nó? –
http://stackoverflow.com/questions/1503555/how-to-find-my-documents-folder –