Как найти папку «Мои документы» в Java - PullRequest
11 голосов
/ 01 октября 2009

Я хочу сохранить файл в папке «Мои документы» пользователя.

Я пытался получить местоположение следующим образом:

System.getenv("USERPROFILE") + "\\My Documents\\"

Затем я понял, что это не сработает в системе, в которой установлен другой язык, например, французский.

Есть ли другой способ эффективного получения папки "Мои документы"?

Ответы [ 5 ]

15 голосов
/ 01 октября 2009

Если вы не возражаете против зависимости от Swing, вы можете использовать этот трюк:

import javax.swing.JFileChooser;
javax.swing.filechooser.FileSystemView;

public class GetMyDocuments {
  public static void main(String args[]) {
     JFileChooser fr = new JFileChooser();
     FileSystemView fw = fr.getFileSystemView();
     System.out.println(fw.getDefaultDirectory());
  }
}

(источник: http://www.rgagnon.com/javadetails/java-0572.html)

13 голосов
/ 02 октября 2015

Что касается производительности, это быстрее , чем при использовании JFileChooser:

FileSystemView.getFileSystemView().getDefaultDirectory().getPath()

В моем ПК для подхода JFileChooser требовалось 300 мс, а для прямого вызова FileSystemView требовалось менее 100 мс.

5 голосов
/ 01 октября 2009

Есть Winfoldersjava JNI расширение для доступа к специальным именам папок в Java.

Страница winfoldersjava также описывает другой метод с использованием Swing:

Кроме того, если вам нужен только путь «Мои документы» и вы не против прикоснуться к Swing, вам может не понадобиться WinFoldersJava. Вместо этого вы можете использовать javax.swing.filechooser.FileSystemView.getFileSystemView (). GetDefaultDirectory ().

0 голосов
/ 01 октября 2009

Местоположение этого каталога может быть изменено каждым пользователем, поэтому оно не только зависит от локали.
Чтобы найти, где находится эта папка, вы должны заглянуть в реестр. Для этого команда Windows:

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User
Shell Folders" /v personal

или

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell 
Folders" /v personal

не уверен, какое место на самом деле, но это одно из них.

0 голосов
/ 01 октября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...