如何在 OS X 中使用 Java 找到用户的“文档”文件夹?

Posted

技术标签:

【中文标题】如何在 OS X 中使用 Java 找到用户的“文档”文件夹?【英文标题】:How do I find the user's 'Documents' folder with Java in OS X? 【发布时间】:2009-02-20 00:37:39 【问题描述】:

我想在用户的“文档”文件夹中创建一个目录,但到目前为止我只知道如何获取用户的主目录:

javax.swing.JFileChooser fr = new javax.swing.JFileChooser();
javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView();
this.userDirectory = fw.getDefaultDirectory();

在 Windows 中,上面的代码返回“我的文档”目录,这很好,这是新文档应该去的地方。在 OS X 上,它只返回主目录。

将“文档”添加到返回的路径会导致本地化问题。

我该怎么做?

【问题讨论】:

***.com/questions/272544/… 讨论了正确的 Objective-C 方法 - 我不知道如何/是否可以在 Java 中完成。 【参考方案1】:

System.getProperty("user.home")+File.separator+"Documents";

不用担心本地化,看:

macb:Documents laullon$ pwd
/Users/laullon/Documents

我的 OS X 是西班牙语的。

【讨论】:

事实证明,OS X 本地化是通过更改显示给用户的名称来工作的,而不是实际的文件名。下面参考。 developer.apple.com/documentation/MacOSX/Conceptual/… 让生活变得轻松,但我不确定我是否非常喜欢它 :) 最好和最安全的答案是使用 Apples FileManager【参考方案2】:

您想使用 Apple 的 eio.FileManager 扩展:

    static public String documentsDirectory()
            throws java.io.FileNotFoundException 
        // From CarbonCore/Folders.h
        final String kDocumentsDirectory = "docs";
        return com.apple.eio.FileManager.findFolder(
            com.apple.eio.FileManager.kUserDomain,
            com.apple.eio.FileManager.OSTypeToInt(kDocumentsDirectory)
        );
    

Documentation

【讨论】:

谢谢,这对我有帮助 - 我需要它来查找用户的音乐文件夹。扩展不是下载;它位于 Mac OS X 中捆绑的 JRE 中。因此,如果您有必须在其他平台上编译的代码,则必须反思地编写此代码。最后,可以在walteriankaye.com/as/foldertypes.html 找到对所有文件夹类型的引用 或者你可以下载一个扩展的存根,然后创建一个包装类,它只有在平台是 osx 时才会被调用,这样可以避免编写反射代码。【参考方案3】:

在 mac(据我所知所有最近的 10.x 变体)上,“我的文档”目录位于(从根目录): /Users//Documents 因此它位于用户主目录中的“Documents”子目录中。

【讨论】:

以上是关于如何在 OS X 中使用 Java 找到用户的“文档”文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTML 文本区域中找到光标位置(X/Y,而不是行/列)? [复制]

如何在Mac OS X上面指定Eclipse启动时用指定的某一版本JDK

如何在Mac OS X上面指定Eclipse启动时用指定的某一版本JDK

如何实现无需输入密码自动登录OS X Yosemite

如何在 OS X 上全局设置 java 系统属性?

如何在 Mac OS X Leopard 上的 dtrace 中使用热点探针?