2

社内には、従業員が使用するグローバル Java アプリケーションがいくつかあります。その中には、ユーザーがレポートを作成できるものもあり、レポートは常にホーム ディレクトリに保存されます。U:/ホーム ディレクトリはネットワーク ドライブであり、ユーザーが自分のコンピューターにログインすると、ドライブ文字が割り当てられます。そのため、アプリケーションでは、レポートの宛先ディレクトリへのパスは単純にハードコードされU:\Reportsた .

ただし、まもなく Windows XP から Windows 7 に移行し、別の構造を使用する予定です。ユーザーは、Windows 7 エクスプローラーのドキュメント ライブラリでアクセスできる他のサーバー上の新しいホーム ディレクトリを取得します。ドライブ文字はもうありません。

したがって、レポート ディレクトリの新しいパスはLibraries\Documents\My Documents\Reports. しかし、Java でこのパスにアクセスするにはどうすればよいでしょうか? 実際の絶対 UNC パスを見つけるにはどうすればよいですか (これが必要な場合)。

\\theserver\users\username複数のサーバー (大陸ごとに 1 つ) があるため、単に使用することはできません。Windows 7 ドキュメント ライブラリのフォルダーを使用する必要があります。

4

2 に答える 2

2

まず、「ライブラリ」は実際のファイル システムの場所ではありません。ライブラリは、ファイル システムの場所を指します。win7 でライブラリを右クリックしてそのプロパティを表示すると、それが指している実際のファイル システムの場所が表示されます。デフォルトでは、ドキュメント ライブラリは を指してい C:\Users\{userName}\Documentsます。いずれの場合でも、次を使用して現在のユーザーのホーム ディレクトリにアクセスできます。

System.getProperty("user.home")

したがって、ドキュメント フォルダーにアクセスするには、次のようにします。

File documentsFolder = new File(System.getProperty("user.home") + "\\Documents");   
于 2013-05-22T11:09:53.240 に答える
0

JNAを使用できます:

import com.sun.jna.Native;
import com.sun.jna.platform.win32.Shell32;
import com.sun.jna.platform.win32.ShlObj;
import com.sun.jna.platform.win32.WinDef;

...

    char[] pszPath = new char[WinDef.MAX_PATH];
    Shell32.INSTANCE.SHGetFolderPath(null,
      ShlObj.CSIDL_MYDOCUMENTS, null, ShlObj.SHGFP_TYPE_CURRENT,
      pszPath);
    System.out.println(Native.toString(pszPath));

Windows 特殊フォルダーの取得 (JNA)を参照してください。

別の方法として、JFileChooser クラスによって提供されるメソッドを使用できます。

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());
  }
}
于 2013-05-22T11:29:45.273 に答える