По какой-то причине мне иногда нужно найти папку Мои документы текущего пользователя в Windows в программе Java, чтобы прочитать некоторые файлы. Но, насколько я могу судить, нет способа сделать это без серьезных недостатков.
Первый неправильный способ: System.getProperty ("user.home");
Почему не работает:
Второй неверный способ: использование программы чтения реестра для получения личной папки пользователя, которой являются Мои документы (но i18n'd).
Почему не работает:
Хотя он решает проблему только на английском языке, он по-прежнему использует ту же устаревшую область реестра, поэтому ошибки по-прежнему относятся к нему.
В устаревшем разделе реестра говорится, что нужно использовать собственный вызов (SHGetKnownFolderPath), что я, очевидно, не могу сделать из Java.
Третий неверный способ:
JFileChooser fr = new JFileChooser();
FileSystemView fw = fr.getFileSystemView();
File documents = fw.getDefaultDirectory();
Почему не работает: отлично работает!
За исключением тех случаев, когда это не так. Хотя у меня была программа, которая использовала это открытие и работала в фоновом режиме, я открыл игру DirectX (Fallout: New Vegas). Программа Java немедленно завершилась без трассировки стека. Всегда воспроизводимый (для меня в этой игре, и неизвестно в чем еще). Не удалось найти ошибку Sun №.
Так есть ли какой-нибудь способ найти папку «Документы» пользователя в Windows с помощью Java, у которого нет известных проблем?
(Это хороший большой вопрос.)
* (Ключ: «HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders»)